struts2 + freemarker的问题

yonge 发布于 2009/04/09 16:11
阅读 3K+
收藏 0

struts2 做MVC ,freemarker做表现层。

现在我要在页面上做一个简单的下拉框。如果用JSP做表示层,很简单:

 <s:select name="person.deleted" list="#{'-1':'','0':'是','1':'否'}" value="-1"/>

但是这条语句,如果用Freemarker做为表示层之后,需要这么写:

<@s.select name="person.deleted" list="#{'-1':'','0':'是','1':'否'}"  value="-1"/>

但是这条语句在执行的时候会出错。直接在Eclipse中提示错误。Eclipse中提示的错误是:Found string literal :'-1'。不知道是什么意思!

初步怀疑是#{}引起的问题。但是如果我把这个List作为一个服务器对象,保存在Session或者Application中,再来访问就可以出来结果。

比如

			HashMap yn = new HashMap();
			yn.put("-1", "");
			yn.put("0", "是");
			yn.put("1", "否");

			context.getApplication().put("yesno", yn);

然后页面上这样调用:

<@s.select name="person.deleted" list="#application.yesno"  value="-1"/>

这样就没有问题。只是这样处理起来非常麻烦,简单的逻辑完全可以直接在页面上处理,没必要都通过服务器来处理。

加载中
0
yonge
yonge

直接使用<@s.select name="person.deleted" list="#{'-1':'','0':'是','1':'否'}"  value="-1"/> 这种方式,出来的错误:

javax.servlet.ServletException: java.io.IOException: There was an error loading the template on an earlier attempt; it is attached as a cause
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:422)
com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:99)

0
红薯
红薯

又研究起 FreeMarker 来了?

0
乔康007
乔康007
freemarker标签支持ognl表达式吗?
返回顶部
顶部