请教下各位大侠
我在jsp里面加了这个标签<s:radio list="{'男' ,'女'} " name="user" label="性别"/>
然后就抛出下面的错误了,我没有在项目里面使用freeer,但是为什么会出现下面的错误呢?麻烦大侠们指教下2009-10-25 9:45:40 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet jsp threw exceptionError on line 26, column 13 in template/simple/dynamic-attributes.ftl
Expecting a string, date or number here, Expression parameters.dynamicAttributes[aKey] is instead a freeer.ext.beans.SimpleMethodModel
The problematic instruction:
----------
==> ${parameters.dynamicAttributes[aKey]?html} [on line 26, column 11 in template/simple/dynamic-attributes.ftl]
 in include "/${parameters.templateDir}/simple/dynamic-attributes.ftl" [on line 48, column 1 in template/simple/textarea.ftl]
 in include "/${parameters.templateDir}/simple/textarea.ftl" [on line 24, column 1 in template/xhtml/textarea.ftl]
----------Java backtrace for programmers:
----------
freeer.core.NonStringException: Error on line 26, column 13 in template/simple/dynamic-attributes.ftl
Expecting a string, date or number here, Expression parameters.dynamicAttributes[aKey] is instead a freeer.ext.beans.SimpleMethodModel
        at freeer.core.Expression.getStringValue(Expression.java:126)
        at freeer.core.Expression.getStringValue(Expression.java:93)
        at freeer.core.StringBuiltins$StringBuiltIn._getAsTemplateModel(StringBuiltins.java:71)
        at freeer.core.Expression.getAsTemplateModel(Expression.java:89)
        at freeer.core.Expression.getStringValue(Expression.java:93)
        at freeer.core.DollarVariable.accept(DollarVariable.java:76)
        at freeer.core.Environment.visit(Environment.java:209)
        at freeer.core.MixedContent.accept(MixedContent.java:92)
        at freeer.core.Environment.visit(Environment.java:209)
        at freeer.core.IteratorBlock$Context.runLoop(IteratorBlock.java:167)
        at freeer.core.Environment.visit(Environment.java:416)
        at freeer.core.IteratorBlock.accept(IteratorBlock.java:102)
        at freeer.core.Environment.visit(Environment.java:209)
        at freeer.core.MixedContent.accept(MixedContent.java:92)
        at freeer.core.Environment.visit(Environment.java:209)
        at freeer.core.ConditionalBlock.accept(ConditionalBlock.java:79)
        at freeer.core.Environment.visit(Environment.java:209)
        at freeer.core.MixedContent.accept(MixedContent.java:92)
        at freeer.core.Environment.visit(Environment.java:209)
        at freeer.core.Environment.include(Environment.java:1482)
        at freeer.core.Include.accept(Include.java:169)
        at freeer.core.Environment.visit(Environment.java:209)
        at freeer.core.MixedContent.accept(MixedContent.java:92)
        at freeer.core.Environment.visit(Environment.java:209)
        at freeer.core.Environment.include(Environment.java:1482)
        at freeer.core.Include.accept(Include.java:169)
        at freeer.core.Environment.visit(Environment.java:209)
        at freeer.core.MixedContent.accept(MixedContent.java:92)
        at freeer.core.Environment.visit(Environment.java:209)
        at freeer.core.Environment.process(Environment.java:189)
        at freeer.template.Template.process(Template.java:237)
        at org.apache.struts2.components.template.FreeerTemplateEngine.renderTemplate(FreeerTemplateEngine.java:182)
        at org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:559)
        at org.apache.struts2.components.UIBean.end(UIBean.java:513)
        at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42)
        at org.apache.jsp.RegisterAction.AddRegister_jsp._jspx_meth_s_005ftextarea_005f0(AddRegister_jsp.java:257)
        at org.apache.jsp.RegisterAction.AddRegister_jsp._jspx_meth_s_005fform_005f0(AddRegister_jsp.java:127)
        at org.apache.jsp.RegisterAction.AddRegister_jsp._jspService(AddRegister_jsp.java:73)
        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.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:102)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:389)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
        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(Thread.java:619)

解决方案 »

  1.   

    你好! struts2的标签默认是用freeer模板技术的,所以会出现freeer错误的,你的这个错在:<s:radio list="{'男' ,'女'} " name="user" label="性别"/> list里是需要一个list实例或者map实例的,你把list的值改成"#{'1':'男','2':'女'}"   或者改成:
    "#{'男':'男','女':'女'}"   也就是说用ognl表达式构造一个map实例出来作为list的参数。 
      

  2.   

    还有一个原因,你的name="user"是个什么东西?user在action中所对应的是一个属性,这个属性是什么类型的。
      

  3.   

    1.struts2的标签默认是用freeer模板技术,导入freeer.jar即可。2.list= "#{'男':'男','女':'女'}" 同 list="{'男','女'}"效果是一样的。
      

  4.   

    <s:radio list="#{1:'男',2:'女'}" name="dto.sex" />男的为1  女的为2  name中是我Dto中的属性sex , dto.sex这样写的目的就是让他返还而已