使用struts bean:write標籤時不能顯示Integer,Date等類型的屬性問題的解決

前段時間做項目的時候遇到了一個奇怪的問題,在使用 <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 name="testForm" property="testDate" format="yyyy-MM-dd hh:mm:ss" /Date型數據處理

這樣確實可以解決問題,但是就有點不爽了。用<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="  "/>的影響,如果有知道的朋友請解釋一下,先謝謝了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章