1.问题描述:
在freemarker页面文件ftl中,使用<@ww.action name="test" executeResult="true" />显示xwork.xml中action为test返回result页面内容,
<action name="test" class="org.TestAction">
<result name="success" type="freemarker">
/WEB-INF/hello.ftl
</result>
</action>
<action name="test2" class="org.TestAction2">
<result name="success" type="dispatcher">
/hello.jsp
</result>
</action>
如果为executeResult="false",表示不返回result页面.
xwork.xml
<action name="actionTagAction" class="org.ActionTagAction">
</action>
org.ActionTagAction action类
private Map map = new HashMap();
public String execute() throws Exception {
ServletActionContext.getRequest().setAttribute("stringByAction", "This is a String put in by the action's doDefault()");
map.put("01", "男");
map.put("00", "女");
return NONE;
}
public Map getMap() {
return map;
}
public void setMap(Map map) {
this.map = map;
}
ftl中使用action标签
<@ww.action name="actionTagAction" executeResult="false" id="sexs"/>
<@ww.property value="#attr.stringByAction" />
<@ww.radio label="性别" name="sex" list="#sexs.map" value="'01'"/>
<@ww.action />在使用jetty运行时,正常显示,但是使用tomcat时候,返回的result页面不能正常显示,报错:
WebWork Problem Report
WebWork has detected an unhandled exception:
Messages: Cannot create a session after the response has been committed
--------------------------------------------------------------------------------
Stacktraces
java.lang.IllegalStateException: Cannot create a session after the response has been committed
报错的情况是首次请求包含<@ww.action />标签的页面,如果是先请求test,在请求包含<@ww.action />标签的页面是可以正常显示的.
经过测试发现:如果不返回result页面,而是得到test中的map或String变量值时,可以取到值,但是tomcat控制台同样也报出上面的错误,
解决方法: 在使用webwork中action标签时,在jsp页面中使用,返回的result页面不管是jsp或ftl都可以正常显示
(taglib.tld来源于:webwork-2.2.4.jar /META-INF/标签描叙符文件)
<%@taglib prefix="ww" uri="/WEB-INF/taglib.tld"%>
<ww:action namespace="/gl" name="test" executeResult="true" /><br/>
<ww:action namespace="/gl" name="test2" executeResult="true" />
/gl为xwork中的命名空间
webwork中标签在jsp页面中较完善,在freemarker中存在一些问题.
分享到:
相关推荐
在与WebWork整合的情况下,FreeMarker模板可以直接调用WebWork的标签,如`<ww:property>`,这使得模板可以方便地访问Action上下文中的属性。例如,`<ww:property value=”orderName”/>`将显示订单名称。这种结合...
5. 若要使用Freemarker模板引擎,需在web.xml中配置JspSupportServlet,并确保使用适当的标签库。 6. 对于一些特殊需求,如标签库、资源文件的配置,可通过webwork.properties文件进行自定义。 #### WebWork核心...
通过`<ww:property value="msg"/>`标签,可以读取Action中的属性,值得注意的是,这一标签并非直接从请求中获取数据,而是从Action的属性中读取。 综上所述,《WebWork入门到精通》课程涵盖了WebWork框架的基础概念...
WebWork UI标签是一种用于构建Web应用程序用户界面的组件,它提供了丰富的功能,使得开发者能够更加便捷地创建交互式的Web...在实际开发中,结合WebWork的Action和Interceptor机制,可以实现复杂的业务逻辑和用户交互。
WebWork 是一个基于Java的MVC(模型-视图-控制器)框架,它为构建Web应用程序提供了强大的支持。WebWork的API是这个框架的核心...在实际项目中,结合ww2cndoc文档,你可以更深入地了解WebWork的细节,提升开发效率。
虽然原文件中没有详细介绍G-Roller-WW的实际应用案例,但这一部分可能涉及如何将WebWork与G-Roller(一个博客平台)结合使用,包括集成JSTL、解决中文问题等。 #### WebWork与其它开源项目的集成 WebWork可以与...
提供了对Servlet API的访问,方便在Action中使用。 ##### Interceptor框架 **Interceptor**框架允许在Action执行前后插入特定的行为,如日志记录、性能监控等。 - **Interceptor的原理** Interceptor类似于AOP...
XML配置通常在struts.xml文件中进行,而注解则可以直接在Action类或方法上使用,使得配置更加简洁直观。 3. **结果类型(Result Types)**:Struts2支持多种结果类型,如JSP、FreeMarker、Velocity等,允许开发者...
- **Field-Driven Action**:直接在Action类中定义字段,并通过`get`和`set`方法进行访问。 - **Model-Driven Action**:通过外部模型对象传递数据,使Action更加轻量级。 #### 五、ActionContext与...
Field-Driven Action 直接在Action类中定义字段,这些字段与表单字段一一对应,WebWork自动将请求参数绑定到这些字段上。而Model-Driven Action则通过定义一个模型对象来封装数据,Action仅作为一个操作模型的中介。...
2. **标签(tag)**:WebWork提供了自定义标签库,这些标签可以方便地在JSP页面中使用,简化视图层的开发。它们通常与动作类配合工作,通过表达式语言(EL)和标签库定义文件(TLD)来定义和使用。例如,`<ww:...
- **Interceptor**:拦截器是WebWork中另一个重要的概念,可以在Action执行前或后执行特定的操作,如事务管理、日志记录等。 - **Interceptor的原理**:通过配置文件或注解来定义拦截器链,按照顺序执行各个拦截器。...
- 在`web.xml`中配置`ServletDispatcher`作为请求的入口点,用于解析URL并调用相应的Action进行业务处理。 #### 三、HelloWorld示例 - **实现步骤**: 1. 创建Action类。 2. 定义Action的处理逻辑。 3. 配置...
- **值堆栈**:OGNL通过值堆栈(OgnlValueStack)来管理数据上下文,使得Action中的数据可以在整个WebWork生命周期内共享。 #### 拦截器框架 - **原理**:通过定义一系列拦截器来增强Action的功能,如日志记录、...
**Action** 在WebWork中扮演着处理请求的核心角色,其主要职责包括接收请求参数、执行业务逻辑及决定视图返回。Action可以分为两种类型: - **Field-Driven Action**:直接利用Action类中的字段作为请求参数。 - **...
**XWork配置**主要集中在`xwork.xml`文件中,该文件定义了Action、拦截器、结果类型等内容。深入理解XWork配置有助于更好地利用WebWork的功能。 #### 七、实战案例:G-Roller-WW **G-Roller-WW**是一个实战项目,...
- OGNL是一种强大的表达式语言,用于在Action中访问和操作对象。 - 通过值堆栈(OgnlValueStack)来管理和操作数据。 - **Interceptor框架**: - Interceptor框架允许开发者编写自定义的拦截器来处理请求。 - ...
通过OGNL,开发者可以轻松地访问和操作值堆栈(Value Stack)中的对象,值堆栈是WebWork用于存储和传递数据的核心机制之一,它在Action执行过程中保持数据的连续性,使得数据能够在多个Action之间共享。 #### 拦截...