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中存在一些问题.