在freemarker中使用自定义zk标签

阅读更多

    本篇博文将叙述在freemarker中以标签的形式调用自定义的zk component,jsp的方式就不赘述了,很类似。部分组件使用官方提供的demo,下载点此

,zk组件定制过程不在本文讨论范围。


   首先确保zuljsp.jar在项目中

    以zssapp component 为例,该组件是官方demo在zss-app-2.0.1.zip 可以获得源代码。


		zssapp
		div
		org.zkoss.zss.app.zul.Zssapp
	
 

提供一个标签解析的工具类,需要扩展zk的标签基类BranchTag

package app.support.util;

import org.zkoss.jsp.zul.impl.BranchTag;

public class ZssappTag extends BranchTag {

	@Override
	protected String getComponentName() {
		return "zssapp";
	}

}
 

    加入一个tld文件





	
		The JSP Tags for ZK XUL Components
	
	1.5
	zssapp
	http://bijiqiang.me/jsp/zul
	
		
			Define the Spreadsheet comonent.
		
		zssapp
		app.support.util.ZssappTag
		scriptless
		
			
				If false, this tag is ignored. Default: true.
			
			if
			false
			true
		
		
			
				If true, this tag is ignored. Default: false.
			
			unless
			false
			true
		
		
			
				Default : Zul Component Spreadsheet.
			
			use
			false
			true
		
		
			
				Used to forward Event, same as ZUL's forward.
			
			forward
			false
			true
		
		true
	
	
 

tag-class标签应指定到刚刚书写的标签工具类,name标签要与标签工具类的getComponentName返回值相同。


 web.xml 应包含以下片段

	
		JspSupportServlet
		org.apache.struts2.views.JspSupportServlet
		1
	
 

 

  struts action代码如下负责转发

package app.action;

import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;

import app.model.Role;
import app.model.User;
import app.support.action.BaseAction;

import com.opensymphony.xwork2.Action;

public class IndexAction extends BaseAction {

	private String test="/xls/海水质量监测-水质数据.xls";

	public String execute() {
		return Action.INPUT;
	}

	public String getTest() {
		return test;
	}

	public void setTest(String test) {
		this.test = test;
	}

	
}
 

 struts.xml 片段



		
			/WEB-INF/freemarker_test.ftl
			
		
	
 

freemarker_test.ftl页面


<#assign z=JspTaglibs["http://www.zkoss.org/jsp/zul"] /> 
<#assign app=JspTaglibs["/WEB-INF/tld/zk/zssapp.tld"]>



ZK Spreadsheet


<@z.page zscriptLanguage="java">
	

ZK Spreadsheet

<@z.window height="100%"> <@app.zssapp id="fluSpreadsheet" src="${test}" width="100%" height="100%" maxrows="51" maxcolumns="42" style="border:1px solid black;"/>
 

 

<#assign z=JspTaglibs["http://www.zkoss.org/jsp/zul"] /> 是引用zk默认提供的标签

<#assign app=JspTaglibs["/WEB-INF/tld/zk/zssapp.tld"]> 是引用自定制的zk组件


顺便吐个槽,zk的jar没用maven版本管理,连版本号都没有,官方的例子经常是跑不通的,哎。



你可能感兴趣的:(zk,freemarker,JSP,Servlet,Struts)