struts2标签 s:radio 报错

Jo_Cai 2010-03-04 01:14:33
下载了一个 struts2.0.11 + spring 的系统来参考,但在 一个注册页面的表单里出了问题。
如果删去下面的<s:radio>标签则不会报错。
不知道是什么原因呢。

下面的是部分该JSP页面的代码

<tr>
<td align="right" width="20%">
<s:text name="msg.gender" />
</td>
<td>
<s:radio name="gender" value="getText('gender.male')"
list="#{getText('gender.male'):getText('gender.male'),
getText('gender.female'):getText('gender.female')}"
listKey='key' listValue='value' />
</td>
</tr>



报错的内容如何:
2010-3-4 13:11:31 freemarker.log.JDK14LoggerFactory$JDK14Logger error
严重:

Error on line 25, column 9 in template/simple/radiomap.ftl
stack.findValue(parameters.listKey) is undefined.
It cannot be assigned to itemKey
The problematic instruction:
----------
==> assignment: itemKey=stack.findValue(parameters.listKey) [on line 25, column 9 in template/simple/radiomap.ftl]
in user-directive s.iterator [on line 23, column 1 in template/simple/radiomap.ftl]
----------

Java backtrace for programmers:
----------
freemarker.core.InvalidReferenceException: Error on line 25, column 9 in template/simple/radiomap.ftl
stack.findValue(parameters.listKey) is undefined.
It cannot be assigned to itemKey
at freemarker.core.Assignment.accept(Assignment.java:111)
at freemarker.core.Environment.visit(Environment.java:196)
at freemarker.core.IfBlock.accept(IfBlock.java:82)
at freemarker.core.Environment.visit(Environment.java:196)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:196)
at freemarker.core.Environment.visit(Environment.java:233)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:116)
at freemarker.core.Environment.visit(Environment.java:196)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:196)
at freemarker.core.Environment.process(Environment.java:176)
at freemarker.template.Template.process(Template.java:232)
at org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:168)
at org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:530)
at org.apache.struts2.components.UIBean.end(UIBean.java:484)
at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:43)
at org.apache.jsp.reg_jsp._jspx_meth_s_005fradio_005f0(reg_jsp.java:639)
at org.apache.jsp.reg_jsp._jspx_meth_s_005fform_005f0(reg_jsp.java:361)
at org.apache.jsp.reg_jsp._jspService(reg_jsp.java:131)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:413)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
2010-3-4 13:11:31 org.apache.struts2.components.UIBean end
...全文
1329 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lcl19880917 2010-05-28
  • 打赏
  • 举报
回复
<tr>
<td align="right" width="20%">
<s:text name="msg.gender" />
</td>
<td>
<s:radio name="gender" value="getText('gender.male')"
list="#r{getText('gender.male'):getText('gender.male'),
getText('gender.female'):getText('gender.female')}"
listKey='key' listValue='value' />
</td>
</tr>
liqwy 2010-03-20
  • 打赏
  • 举报
回复
版本有问题是什么问题呢??
Jo_Cai 2010-03-04
  • 打赏
  • 举报
回复
还是不行~~~~~~~~~~~
Jo_Cai 2010-03-04
  • 打赏
  • 举报
回复
引用 4 楼 bayougeng 的回复:
1.把没用的都去掉,只留list属性。
2.确认版本是否有问题。

我修改得只剩下这样

<s:radio name="gender"
list="#{getText('gender.male'):getText('gender.male'),
getText('gender.female'):getText('gender.female')}"/>
Jo_Cai 2010-03-04
  • 打赏
  • 举报
回复
还有一点很奇怪,如果我把这段代码用<!-- -->注释掉,加载JSP页面的时候还是依然报错。

<s:radio name="gender" value="getText('gender.male')"
list="#{getText('gender.male'):getText('gender.male'),
getText('gender.female'):getText('gender.female')}"
listKey='key' listValue='value' />
redlotus_lyn 2010-03-04
  • 打赏
  • 举报
回复
1.
<s:radio name="gender" value="getText('gender.male')"
list="#{getText('gender.male'):getText('gender.male'),
getText('gender.female'):getText('gender.female')}" />


2.换成以下形式看看,如果不好用,是你框架问题,好用s:radio写法问题。
<s:radio name="gender" value="1" list="#{'1':'男', '2':'女'}" />

3.我的qq:75425364
bayougeng 2010-03-04
  • 打赏
  • 举报
回复
1.把没用的都去掉,只留list属性。
2.确认版本是否有问题。
APOLLO_TS 2010-03-04
  • 打赏
  • 举报
回复
listKey='key' listValue='value' 删除

如果值类型为List<T>

T{
P key
P value
}

你可以那么用!未必对,但是大多数情况如此。只有list才是必须的!
Jo_Cai 2010-03-04
  • 打赏
  • 举报
回复
顶起来~~~~~~~~~~
Jo_Cai 2010-03-04
  • 打赏
  • 举报
回复
不知道跟lib文件下的jar包有没有关系呢?lib文件下有
1,commons-fileupload-1.2.jar
2,commons-io-1.3.1.jar
3,commons-logging-1.0.4.jar
4,freemarker-2.3.8.jar
5,ognl-2.6.11.jar
6,spring.jar
7,struts2-core-2.0.11.jar
8,struts2-spring-plugin-2.0.11.jar
9,xwork-2.0.4.jar

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧