您的位置:首页 > 编程语言 > Java开发

Struts2+freemarker实现打印出xml文件

2013-03-15 17:05 155 查看
前两天有关struts2的任务,刚整出来,有需要用freemarker去实现打印xml,所以在此写下点东西,希望能对刚开始学习的人有点帮助。

首先是free.jsp文件

<s:form action="FreeTestAction" namespace="/login">
 <s:textfield name="username" label="用户名" id="usernameId" cssStyle="width:145px;" />
 <s:password name="password" label="密  码" id="passwordId" cssStyle="width:145px;" />
 <s:submit value="登录" theme="simple" method="execute"/>
</s:form>
接下来是free.ftl文件
<?xml version="1.0" encoding="utf-8"?>
<Functioninfo>
  <#list functionlist as function>
   <function>
      <id>${function.id}</id>
      <name>${function.name}</name>
      <fdescription>${function.fdescription}</fdescription>
   </function>
  </#list>
</Functioninfo>


接下来就是FreeTestAction.java文件了

package org.blj.web.action;

import java.util.ArrayList;
import java.util.List;

import org.blj.web.dto.FreeDto;

import com.opensymphony.xwork2.ActionSupport;

public class FreeTestAction  extends ActionSupport {

	private static final long serialVersionUID = 1L;
	private List<FreeDto> functionlist;

   public String execute() throws Exception
   {
	    functionlist= new ArrayList<FreeDto>();
	    FreeDto freedto = new FreeDto();
	    freedto.setId("1");
	    freedto.setName("a");
	    freedto.setFdescription("ddd");
	    functionlist.add(freedto);
      return "success";
   }

   public List<FreeDto> getFunctionlist() {
      return functionlist;
   }

   public void setFunctionlist(List<FreeDto> functionlist) {
      this.functionlist = functionlist;
   }

}

接下来该是FreeDto.java文件了

package org.blj.web.dto;

public class FreeDto{
	private String id;
	private String name;
	private String fdescription;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getFdescription() {
		return fdescription;
	}
	public void setFdescription(String fdescription) {
		this.fdescription = fdescription;
	}
}

因为我没有连接数据库,就不说从数据库取数据了

剩下的就是struts.xml了

<action name="FreeTestAction" class="org.blj.web.action.FreeTestAction">
         	<result name="success" type="freemarker">
           <param name="location">/WEB-INF/template/free.ftl</param>
           <param name="contentType">application/xml</param>
        	</result>
       </action>

把这加到里面就可以了



顺便再说一句,如果去值的时候,值为空时模板是会报错的,在这里给出个判断来避免出错

<#if name??>

……

</#if>

当然也可以通过设置默认值${name!""}来避免对象为空的错误



最后说一下,我这个也是从网上学来的,可能跟网上有雷同的地方,要谅解!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: