新建模板类,继承TemplateDirectiveModel
public class ConsultationDirective implements TemplateDirectiveModel {
@Override
public void execute(Environment environment, Map map, TemplateModel[] templateModels, TemplateDirectiveBody templateDirectiveBody){
try {
int siteId = Integer.valueOf(map.get("siteId").toString());
int type = Integer.valueOf(map.get("type").toString());
int pageNo = Integer.valueOf(map.get("pageNo").toString());
int pageSize = Integer.valueOf(map.get("pageSize").toString());
Pagination page = consultationDao.getJcConsultationEntityPage(siteId,type,pageNo,pageSize);
List list = new ArrayList();
int count = 0;
if(page != null){
list = page.getList();
count = page.getTotalCount();
}
environment.setVariable("ConsultationList", getBeansWrapper().wrap(list));
environment.setVariable("TotalCount", getBeansWrapper().wrap(count));
templateDirectiveBody.render(environment.getOut());
}catch (Exception e){
e.printStackTrace();
}
}
public static BeansWrapper getBeansWrapper(){
BeansWrapper beansWrapper =
new BeansWrapperBuilder(Configuration.VERSION_2_3_21).build();
return beansWrapper;
}
@Autowired
private ConsultationDao consultationDao;
}
配置bean容器
<bean id="cms_ConsultationDirective_list" class="com.jeecms.cms.action.directive.ConsultationDirective"/>
在freemarkerConfig中配置标签变量
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<!--获取标签配置-->
<property name="freemarkerVariables" value="#{propertyUtils.getBeanMap('directive.')}"/>
<property name="templateLoaderPath" value=""/>
<property name="freemarkerSettings">
<props>
<prop key="tag_syntax">auto_detect</prop>
<prop key="template_update_delay">5</prop>
<prop key="defaultEncoding">UTF-8</prop>
<prop key="url_escaping_charset">UTF-8</prop>
<prop key="locale">zh_CN</prop>
<prop key="boolean_format">true,false</prop>
<prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
<prop key="date_format">yyyy-MM-dd</prop>
<prop key="time_format">HH:mm:ss</prop>
<prop key="number_format">0.######</prop>
<prop key="whitespace_stripping">true</prop>
<!--空值处理<prop key="classic_compatible">true</prop>-->
<prop key="auto_import">/WEB-INF/ftl/jeecms/index.ftl as p,/WEB-INF/ftl/spring.ftl as s</prop>
</props>
</property>
</bean>
此处为全局变量,需要在对应的.properties中添加对应的映射
directive.cms_ConsultationDirective_list=cms_ConsultationDirective_list
使用标签访问
[@cms_ConsultationDirective_list siteId=siteId type=type pageNo=pageNo pageSize=pageSize]
[#list ConsultationList as a]
<li>
<a href="/replyDetails.jspx?conId=${a.consultationId!}">[@text_cut s=a.theme! len='12' append='...'/] ${TotalCount}</a>
</li>
<div></div>
[/#list]
[/@cms_ConsultationDirective_list]
或者
<@cms_ConsultationDirective_list name="zhangsan">
<#if userList?? && userList?size gt 0>
<#list userList as user>
<a href="">${user.name}</a>
</#list>
</#if>
</@cms_ConsultationDirective_list >