如何自定义标签(.tld文件的使用) --Freemark

struts中可以通过struts.xml配置action返回对应的jsp

<action name="Action" class="com.test.Action">
    <result>/test.jsp</result>
</action>

也可以返回对应的freemark模板页面

<action name="Action" class="com.test.Action">
    <result type="freemarker">/fmTest.ftl</result>
</action>
很多的时候我们需要在freemark中使用struts的标签

<#assign sec=JspTaglibs["/WEB-INF/security.tld"] />
<@sec.authentication property="name" />

但是freemark中默认是不支持struts的标签库的,这时我们需要引入对应得.tld文件

                                                   引用前把struts2-core-2.0.x.x.jar包里的META-INF/struts-tags.tld 复制到 /WEB-INF/struts-tags.tld


<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd">
  <description><![CDATA["To make it easier to access dynamic data;
                    the Apache Struts framework includes a library of custom tags.
                    The tags interact with the framework's validation and internationalization features;
                    to ensure that input is correct and output is localized.
                    The Struts Tags can be used with JSP FreeMarker or Velocity."]]></description>
  <display-name>"Struts Tags"</display-name>
  <tlib-version>223</tlib-version>
  <short-name>s</short-name>
  <uri>/struts-tags</uri>
  <tag>
    <description><![CDATA[Execute an action from within a view]]></description>
    <name>action</name>
    <tag-class>org.apache.struts2.views.jsp.ActionTag</tag-class>
    <body-content>JSP</body-content>
    <attribute>
      <description><![CDATA[Whether the result of this action (probably a view) should be executed/rendered]]></description>
      <name>executeResult</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
     。。。。。。。。。。。。
    <dynamic-attributes>false</dynamic-attributes>
  </tag>
</taglib>

修改web.xml中的配置

	<!-- JSPSupportServlet配置 -->
	<servlet>
		<servlet-name>JSPSupportServlet</servlet-name>
		<servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>

如果遇到乱码问题,在配置中添加

<constant name="struts.i18n.encoding" value="gb2312" />

这样,在需要使用struts标签的freemark模板中在最上面引入后,就可以通过类似<@sec.form>的调用。

   

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值