前两天有关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!""}来避免对象为空的错误
最后说一下,我这个也是从网上学来的,可能跟网上有雷同的地方,要谅解!