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" />

[Freemarker] - 使用struts的component调用freemarker的ftl模板方法的更多相关文章

  1. Spring mvc 中使用ftl引用共通文件出错 FreeMarker template error: Error reading included file "/WEB-INF/ftl/common/errormessage.ftl"

    初次接触spring mvc,想做一个小的练习项目,结果在ftl文件中引用其它的共通ftl文件时出错.

  2. 用Main方法调用freemarker生成文件

    MyGenerator.java package com.comp.common; import java.io.BufferedWriter; import java.io.File; import ...

  3. 内嵌的Component调用外部的方法

    如果一个内嵌的Component控件需要调用外部定义的方法,用outerDocument.方法名来调用,前提是该方法是public的.如:<mx:DataGridColumn headerTex ...

  4. JAVA用freemarker生成复杂Excel。(freemarker)

    在生成Excel的时候,大多时候都是使用poi,jxl等进行的,但是对于复杂的Excel来说,这个工作量是非常的大的,而且,对于我这么懒的人来说,这是相当痛苦的一件事情,所以,我不得不找找有没有简单一 ...

  5. freemarker 嵌套循环 (导出word时,修改ftl模板)

    1.循环 (循环输出reportList列表的每行的姓名) <#list reportList as report> ${report.name} </$list> 2.嵌套循 ...

  6. FreeMarker调用Java静态方法以及静态变量的方法

    这里介绍下在类似 Spring+FreeMarker 的架构中如何在FreeMarker中访问Java中的静态方法以及静态变量. 一.首先为了方便以及可复用我们创建一个工具类 /** * FreeMa ...

  7. FreeMarker教程

    一.什么是模板引擎,为什么要用模板引擎 在B/S程式设计中,常常有美工和程序员二个角色,他们具有不同专业技能:美工专注于表现——创建页面.风格.布局.效果等等可视元素:而程序员则忙于创建程式的商业流程 ...

  8. freemarker自定义标签(与java合用)

    自定义类继承FreemarkerManager类,重写protected Configuration createConfiguration(ServletContext servletContext ...

  9. FreeMarker的基础语法

    FreeMarker语言 FreeMarker语言概述 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写. FreeMarker被设计用来生成HTML Web ...

随机推荐

  1. Debian添加raw裸设备

    一.检查系统是否已经启用了raw模块 root@frog:~# lsmod|grep raw 如果系统没有启用raw模块! 二. 设置系统自动启用raw root@frog:~# echo raw & ...

  2. c#中对json数据的序列化和反序列化(笔记)

    今天遇到在后台中要获取json格式数据里的某些值,网上查了些资料: string jsonstr = _vCustomerService.LoadCustomerbyNumTotalData(quer ...

  3. Octopus系列之js公共函数

    货币选择 ChangeCurrency(this.value) 示例 <select name="currency" id="sl_currency" c ...

  4. HTML5 WebSocket 实时推送信息测试demo

    测试一下HTML5的websocket功能,实现了客户端→服务器实时推送信息到客户端,包括推送图片: websocket实现MessageInbound类 onTextMessage()/onBina ...

  5. Windows下搭建Git开发环境

    Windows下搭建Git开发环境主要有以下三种方法: 1,VS,vs2013和vs2015中已经集成了git插件了 2,msysGit+TortoiseGit 3,msysGit+SourceTre ...

  6. [最近公共祖先] POJ 3728 The merchant

    The merchant Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 4556   Accepted: 1576 Desc ...

  7. Windows 7中无法访问FTP的解决方法

    解决: netsh advfirewall set global StatefulFTP disable

  8. C语言基础--循环 递归打印乘法表

    for循环打印乘法表: #include <stdio.h> // for循环打印乘法表 int main(int argc, const char * argv[]) { //矩形 ; ...

  9. Python开发入门与实战9-基于vs的集成开发环境

    9. 基于visual studio的Python的集成开发环境 上一章我们描述了如何安装使用Java的集成开发环境Eclipse IDE,本章我们来说明另一种集成开发环境,也是笔者多年的开发习惯使用 ...

  10. cassandra CQL 常用操作

    1. CQL客户端链接 bin/cqlsh ip username password 2. (1)建立keyspace语句,keyspace类似于 mysql 中的数据库,一个数据库中可以有很多表: ...