struts中的component标签,可以用来调用freemarker的ftl模板文件,使用component标签传参可以这样写:
使用property方式写法:
<s:component template="gridComponent.ftl" templateDir="/WEB-INF/template"> <s:param name="grid" value="userss"></s:param> </s:component>
使用request的get/set attribute方法的写法:
<s:component template="gridComponent.ftl" templateDir="/WEB-INF/template"> <s:param name="grid" value="#request.users"></s:param> </s:component>
使用ftl读参数的方法:
<#assign s=JspTaglibs["/struts-tags"] /> <#assign req = parameters.grid /> <#list req as item> ${item["userName"]} </#list>
普通的struts action:
package com.obs.actions.admin; import java.util.List; import org.apache.struts2.ServletActionContext; import org.springframework.stereotype.Controller; import com.obs.actions.BaseAdminActionSupport; import com.obs.actions.bean.User; import com.obs.util.Common; @Controller @SuppressWarnings("serial") /*@Namespace("/admin") @Results({ @Result(name="success", location="/WEB-INF/view/admin/user.jsp") })*/ public class UserAction extends BaseAdminActionSupport { private List<User> userss; public List<User> getUserss() { return userss; } public void setUserss(List<User> userss) { this.userss = userss; } /** * 页面默认执行action */ @Override public String execute() throws Exception { // 取得所有用户 List<com.obs.service.bean.User> userList = super.userService.findUsers(); // 复制bean List<User> users = Common.copyProperties(userList, User.class); userss = users; // 将action bean设置到页面 ServletActionContext.getRequest().setAttribute("users", users); return SUCCESS; } }
userss是property,users是request的attribute.
ftl文件需要在/WEB-INF目录下新建文件夹:/template/simple
把gridComponent.ftl放在这。不然会报错。
需要修改这个template路径的话,修改struts.xml的这个位置:
<constant name="struts.ui.theme" value="simple" />