当前位置: 代码迷 >> Web前端 >> freemarker -struts中的运用
  详细解决方案

freemarker -struts中的运用

热度:295   发布时间:2012-10-30 16:13:36.0
freemarker --struts中的应用
把freemarker应用于struts中,ftl页面的插值不是通过设置数据模型和合并模板来显示数据的,而是通过设置session等变量来取值,也就是相当于jsp页面在struts中取值的情况一样。不过值得注意的是,ftl中不允许有变量取空值。下面看下一个简单的例子。
1如果要使ftl文件能使用jsptaglib,首先应在web.xml下写上如下代码
  <servlet>
  <!-- define a JspSupportServlet Object -->
  <servlet-name>JspSupportServlet</servlet-name>
  <servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
  <!-- setting JspSupportServlet auto start -->[color=red][/color]
  <load-on-startup>1</load-on-startup>
 </servlet>



2在ftl文件中使用taglib,定义如下
<#global s=JspTaglibs["/WEB-INF/lib/struts-tags.tld"] />  


3本例子中定义了4个ftl文件:公共文件common.ftl,首页面index.ftl,表单文件form.ftl,add.ftl(文件都在上传的文件包中);

4struts.xml中的配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false"></constant>
<constant name="struts.devMode" value="false"/>
<constant name="struts.action.extension" value="do"/>
<package name="default" namespace="/" extends="struts-default">

	<default-action-ref name="index"></default-action-ref>
	<action name="index" class="example.IndexAction">
	  <result type="freemarker">/index.ftl</result>
	</action>
		<action name="form_input" class="example.FormAction">
	<result name="error" type="freemarker">/form.ftl</result>
	<result type="freemarker">/add.ftl</result>
	</action>

	<action name="form" class="example.ExampleSupport">
	 
	 <result type="freemarker">/form.ftl</result>
	
	</action>

</package>

</struts>


5实现效果如下:
index.ftl:


form.ftl添加信息:


add.ftl添加信息成功:


index.ftl显示信息:


  相关解决方案