spring配置 Freemarker自定义标签

1.spring配置Freemarker,配置标签

所有目录标签shishuocms_folder_list


ean id="freemarkerConfig"
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
		<property name="templateLoaderPath" value="/" /><!-- 指定路径 -->
		<property name="defaultEncoding" value="UTF-8" /><!-- 指定编码格式 -->
		<property name="freemarkerVariables">
			<map>
				<!-- 所有目录标签 -->
				<entry key="shishuocms_folder_list" value-ref="folderListTag" />
				<!-- 单个目录标签 -->
				<entry key="shishuocms_folder" value-ref="folderTag" />
				<!-- 文件分页标签 -->
				<entry key="shishuocms_article_page" value-ref="articlePageTag" />
				<!-- 单个文件标签 -->
				<entry key="shishuocms_article" value-ref="articleTag" />
				<!-- 评论分页标签 -->
				<entry key="shishuocms_comment_page" value-ref="commentPageTag" />
			</map>
		</property>
		<property name="freemarkerSettings">
			<props>
				<prop key="template_update_delay">10</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="time_format">HH:mm:ss</prop>
				<prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
				<prop key="date_format">yyyy-MM-dd</prop>
				<prop key="number_format">#.##</prop>
				<prop key="whitespace_stripping">true</prop>
			</props>
		</property>
	</bean>



2. 自定义标签类  folderListTag



import static freemarker.template.ObjectWrapper.DEFAULT_WRAPPER;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.shishuo.cms.constant.FolderConstant;
import com.shishuo.cms.entity.vo.FolderVo;
import com.shishuo.cms.service.FolderService;

import freemarker.core.Environment;
import freemarker.template.TemplateDirectiveBody;
import freemarker.template.TemplateDirectiveModel;
import freemarker.template.TemplateException;
import freemarker.template.TemplateModel;

/**
 * folder标签
 * 
 * @author lqq
 * 
 */
@Service
public class FolderListTag implements TemplateDirectiveModel {
	@Autowired
	private FolderService folderService;

	public void execute(Environment env, Map params, TemplateModel[] loopVars,
			TemplateDirectiveBody body) throws TemplateException, IOException {

		// 获取页面的参数
		Integer fatherId = Integer.parseInt(params.get("fatherId").toString());

		// 获得目录列表
		List<FolderVo> list = folderService.getAllFolderList(fatherId,FolderConstant.Status.display);
		env.setVariable("tag_folder_list", DEFAULT_WRAPPER.wrap(list));
		body.render(env.getOut());
	}

}

3. 页面展示  

@shishuo_cms_folder_list 是 配置中entry key



<ul class="nav navbar-nav">
	               <@shishuocms_folder_list fatherId="0" >
			   <#list tag_folder_list as f>
			       <li >
				<a href="${basePath}/${f.ename}/index.htm">${f.name}</a>
	                       </li>
			  </#list>
	                </@shishuocms_folder_list>
    </ul>




你可能感兴趣的:(spring配置 Freemarker自定义标签)