读书人

今天使用lt;html:messagesgt;出现奇怪异常

发布时间: 2011-12-29 22:09:38 作者: rapoo

今天使用<html:messages>出现奇怪错误,大家进来帮帮忙。
今天使用 <html:messages> 在JSP页面上显示消息:

ACTION文件
ActionMessages actionMessages = new ActionMessages();
actionMessages.add( "messageReplySuccess ", new ActionMessage( "messager.action.messageReply.messageReplySuccess "));
saveMessages(request, actionMessages);
return mapping.findForward( "success ");

JSP文件

<html:messages id= "notice " property= "messageReplySuccess " message= "true ">
<bean:write name= "notice "/>
</html:messages>

struts-config.xml

<!--message reply initial-->
<action path = "/mesReplyInit "
type = "messager.messageReply.MessageReplyInitAction "
name = "messageReplyForm "
scope = "session "
validate = "false "
input = "/jsp/MessageAdmin.jsp ">
<forward name= "success " path= "/jsp/MessageReply.jsp " />
<forward name= "fail " path= "/jsp/MessageReply.jsp " />
</action>
<!--message reply -->
<action path = "/messageReply "
type = "messager.messageReply.MessageReplyAction "
name = "messageReplyForm "
scope = "session "
validate = "true "
input = "/jsp/MessageReply.jsp ">
<forward name= "success " path= "/jsp/MessageReply.jsp " />
<forward name= "fail " path= "/jsp/MessageReply.jsp " />
</action>

画面启动过程是:先走一个初始化ACTION,然后到JSP画面,用户点击按钮提交后进入
另一个ACTION(在这个ACTION里把ACTIONMESSAGE加到request),然后返回这个画面。

错误提示:

javax.servlet.ServletException: Cannot find bean: "notice " in any scope
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.jsp.MessageReply_jsp._jspService(MessageReply_jsp.java:441)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1062)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
messager.util.SetEncodingFilter.doFilter(SetEncodingFilter.java:62)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75)

大家帮我看看是哪里出了问题。
同样的方法在另一个画面都可以使用,不同的是那个画面打开钱没有经过初始化ACTION,但这不会影响啊。



------解决方案--------------------


你要经过初始化嘛,做个action!
[解决办法]
<html:messages id= "notice " property= "messageReplySuccess " message= "true ">
<bean:write name= "notice "/>
</html:messages>

改成
<html:messages id= "actionMessages " property= "messageReplySuccess " message= "true ">
<bean:write name= "actionMessages "/>
</html:messages>
[解决办法]
<html:messages id= "messageReplySuccess ">
是不是id应该对应你的
actionMessages.add( "messageReplySuccess ", new ActionMessage( "messager.action.messageReply.messageReplySuccess "));里面的key值
就是说messageReplySuccess这一个啊。
你初始化的时候也加上actionMessages.add( "messageReplySuccess ", null);
试试
[解决办法]
html:messages id= "notice " message= "true ">
<bean:write name= "notice "/>
</html:messages>
把property属性去掉就可以了。但是不能显示出HTML格式来。
比如: <font color= "green "> <li> 保存成功! </li> </font>

[解决办法]
楼主的问题其实不用这么麻烦吧,直接用
<beam:message key="messager.action.messageReply.messageReplySuccess"/>
就好了,因为不需要参数。

我这需要加参数,所以才用html:messages,结果和楼主类似,也是报那个id找不到-_-||
但是页面另外一处用到html:messages的却没错,唉,要赶紧积攒人品啊

Java code
messages.add("anonymousanswer", new ActionMessage("text.anonymousanswer", FaqConfig.getAnswer_anonymous())); 

读书人网 >Java Web开发

热点推荐