使用struts bean:write标签时不能显示Integer,BigDecimal等类型的属性问题的解决

来源:互联网 发布:java做课程表界面 编辑:程序博客网 时间:2024/05/16 11:22

前段时间做项目的时候遇到了一个奇怪的问题,在使用 <bean:write>标签时当输出的对象是Integer类型的话就会抛异常:

javax.servlet.jsp.JspException: Cannot find message resources under key org.apache.struts.action.MESSAGE
        at org.apache.struts.taglib.TagUtils.retrieveMessageResources(TagUtils.java:1252)
        at org.apache.struts.taglib.TagUtils.message(TagUtils.java:1101)
        at org.apache.struts.taglib.TagUtils.message(TagUtils.java:1076)
        at org.apache.struts.taglib.bean.WriteTag.retrieveFormatString(WriteTag.java:254)
        at org.apache.struts.taglib.bean.WriteTag.formatValue(WriteTag.java:317)
        at org.apache.struts.taglib.bean.WriteTag.doStartTag(WriteTag.java:232)
        at org.apache.jsp.client$jsp._jspService(client$jsp.java:379)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)

奇怪了,<bean:write>标签是很常用的,之前我也用<bean:write>标签输出过Integer对象,但都没什么问题列,<bean:write>标签在输出的时候应该会自动调用对象的toString()方法吧。于是我在网上搜索了一下,也有不少朋友遇到了这样的问题,有一种做法是利用<bean:write>标签的format属性,设置format="#"

bean:write name="testForm" property="testBig" format="#" /BigDecimal型数据处理

bean:write name="testForm" property="testInt" format="#" /Intger型数据处理

这样确实可以解决问题,但是就有点不爽了。用<bean:write>标签输出Integer对象是常有的事,如果总要定义它的format属性就有点麻烦了,而且以前怎么不用这样列?

于是继续找答案,后来又找到一个解决办法,说是strtus-config.xml的问题,里面没有配置<message-resources parameter="  "/>或者是配置有问题,结果我看了一下,果然我的strtus-config.xml里面没有配<message-resources parameter="  "/>于是加了一个,结果还真的把问题解决了。

我也不知道为什么上面的两个方法能够决绝这个问题,也没有在网上找到原因,反正后来也遇到过2次<bean:write>标签时不能显示Integer的问题,也都是这样解决的。有一次我在strtus-config.xml里面配了<message-resources parameter="  "  key=" "/>但还是出现了不能显示Integer的问题,后来我把key=" "删了就好了。

真不知道<bean:write>标签为什么会受<message-resources parameter="  "/>的影响,如果有知道的朋友请解释一下,先谢谢了!