对于在PRG模式中如何在刷新成功页面上删除ActionMessage感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍彻底清除pr,并为您提供关于ActionError,ActionMessage
对于在PRG模式中如何在刷新成功页面上删除ActionMessage感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍彻底清除pr,并为您提供关于ActionError,ActionMessage推荐、Actionerror和Actionmessage标签的用法、activemq 控制面板里的 Number Of Pending Messages、 Messages Enqueued、Messages Dequeued含、ActiveMQ中消费者的onMessage消息处理问题的有用信息。
本文目录一览:- 在PRG模式中如何在刷新成功页面上删除ActionMessage(彻底清除pr)
- ActionError,ActionMessage推荐
- Actionerror和Actionmessage标签的用法
- activemq 控制面板里的 Number Of Pending Messages、 Messages Enqueued、Messages Dequeued含
- ActiveMQ中消费者的onMessage消息处理问题
在PRG模式中如何在刷新成功页面上删除ActionMessage(彻底清除pr)
为了避免重新提交表单,我使用了POST-Redirect-
GET模式,它可以正常工作。现在,在我的注册页面(成功页面)上,显示了ActionMessage“已成功插入审阅!”。当用户刷新页面时,我要删除此消息。
我在JSP页面上的代码:
<s:if test="hasActionMessages()"> <divid="success-mesg"> <s:iterator value="actionMessages"> <s:property value="top" /> </s:iterator> </div></s:if>
在struts.xml上:
<action name="insertReview"method="insertReview" > <result name="insertReviewDone" type="redirect" >insertReviewDone</result> <result name="input" type="tiles">display.writeReview.page</result></action><action name="insertReviewDone"method="insertReviewDone" > <result name="success" type="tiles" >display.writeReview.page</result></action>
在动作课中:
public String insertReviewDone(){ addActionMessage("Write review is successful"); return "success";}
编辑:
实施Aleksandr M建议的答案后,我遇到以下问题:
<s:form name="insertReview" action="insertReview" id="insertReview" theme="simple" enctype="multipart/form-data"> <div> <h1> Review <s:property value="businessName" /> </h1> <s:if test="hasActionMessages()"> <divid="success-mesg"> <s:iterator value="actionMessages"> <s:property value="top" /> </s:iterator> </div></s:if>
刷新以上代码中的页面后,businessName将被删除并且不显示。任何帮助将不胜感激。
答案1
小编典典用于Message StoreInterceptor
在您的操作中存储操作消息insertReview
并在您的insertReviewDone
操作中检索它。insertReview
返回insertReviewDone
结果时,在方法中添加操作消息。
也可以使用redirectAction
result重定向到action而不是redirect
。
<action name="insertReview"method="insertReview"> <interceptor-ref name="store"> <param name="operationMode">STORE</param> </interceptor-ref> <interceptor-ref name="defaultStack" /> <result name="insertReviewDone" type="redirectAction">insertReviewDone</result> <result name="input" type="tiles">display.writeReview.page</result></action><action name="insertReviewDone"method="insertReviewDone" > <interceptor-ref name="store"> <param name="operationMode">RETRIEVE</param> </interceptor-ref> <interceptor-ref name="defaultStack" /> <result name="success" type="tiles">display.writeReview.page</result></action>
ActionError,ActionMessage推荐
尽管Struts框架供给了管用的失常处理机制,但不能保证处理所有的讹谬,这时Struts框架会把讹谬抛给Web容器,在默认情形下Web容器会向用户博览器直接归来原始消息。万一想避免直接让用户看到这些原始消息,能够在web.xml中搭配<error-page>元素,以下代码演示了如何避免用户看到HTTP 404、HTTP 500讹谬和Exception失常。
web.xml
Java代码
<error-page><error-code>404</error-code><location>/exception/error404.jsp</location></error-page><error-page><error-code>500</error-code><location>/exception/error500.jsp</location></error-page><error-page><exception-type>java.lang.Exception</exception-type><location>/exception/default.jsp</location></error-page>
当WEB容器捉拿到exception-type或error-code指定的讹谬时将跳到由location指定的版面。
问题:当form bean 为动态bean时,在action中无法对formbean数据举行检讨,因为formbean未曾翔实告终类。action中无法引用ActionError/ActionErrors/ActionMessage/ActionMessages:
有时候你必需向用户供给相干处理消息,包括表单检讨时觉察讹谬等。
1. 相干类推荐:
ActionMessage:用于保留一个与资源束对应的提醒消息。重要构造函数如:
ActionMessage(String message);
ActionMessage(String message,paramater)。
ActionMessages:用于保留多个ActionMessage。并在html:errors 和html:messages中起作用。
重要构造函数:
ActionMessages().
重要措施是add(String property,ActionMessage message)
ActionMessages有一个HashMap种类messages保留多个ActionMessage对象,每个ActionMessage对象都有单一的一个property标识。这个property能够是自定义的任意字符串,也能够由org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE指定
html:messages/html:errors利用property属性拜会某个资源
ActionErrors:用于保留一个与资源束对应的讹谬消息。用法跟ActionMessages差不多。
ActionError不同意利用。
2. 版本:
struts1.1管用ActionErrors报告讹谬,用ActionMessages供给消息。
在struts1.2中利用ActionMessages供给消息和讹谬,不同意利用ActionError
struts1.3中曾经未曾ActionError类了。
3. AtionErrors和ActionMessages的差异
1. ActionErrors是ActionMessages的一个子类,功能几乎雷同,不同点在于标签<html:errors/>和<html:messages>的利用上的差异。
html:errors指定了footer和header属性。默认值为errors.header和errors.footer,必需时能够自己指定。万一资源属性文件搭配了errors.header和errors.footer,则任何时候利用html:errors时开始和结尾都是这两个属性对应的资源消息。
而html:message默认情形下未曾errors.header和errors.footer值,当然能够自己指定。
2.html:errors能够依据property属性指定揭示一个讹谬消息。html:messages有一个必添项id。html:messages不能直接揭示消息,它将选出的消息纳入一个用id标识的Iterator对象里,然后在用ben:write或JSTLc:out标签揭示每个消息.例如:
Java代码
<html:messagesmessage="true"id="msg"><c:outvalue="${msg}"/><br/></html:messages>
3cf.cfeits.com. 翔实的一个例子:
接受输入版面input.jsp:
Java代码
<html:formaction="/errormessage/input">phoneNumber:<html:textproperty="phoneNumber"/><html:errorsproperty="<%=org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE%>"/><br/><html:submit/><html:cancel/></html:form>
struts-config.xml:
Java代码
<form-beans><form-beanname="inputForm"type="cn.rolia.struts.form.errorexception.InputForm"/></form-beans><action-mappings><actionattribute="inputForm"input="/errormessage/input.jsp"name="inputForm"path="/errormessage/input"scope="request"type="com.yourcompany.struts.action.errormessage.InputAction"validate="false"><forwardname="success"path="/errormessage/success.jsp"/></action></action-mappings>
InputAction.java:
Java代码
publicActionForwardexecute(ActionMappingmappingwww.ria38.com,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){cn.rolia.struts.form.errorexception.InputForminputForm=(cn.rolia.struts.form.errorexception.InputForm)form;//TODOAuto-generatedmethodstubStringphoneNumber=inputForm.getPhoneNumber();if(phoneNumber.length()<4){ActionErrorsmessages=newActionErrors();messages.add(org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE,newActionMessage("error.errormessage.input"));this.saveErrors(request,messages);returnmapping.getInputForward();}returnmapping.findForward("success");}
解说:用户输入手机号码,版面跳转到InputAction扼制层举行处理,若输入数据小于4,则创立一个ActionMessage类存储相干讹谬消息。然后再创立ActionErrors类将此ActionMessage纳入ActionErrors。再调用Action的saveErrors措施将此ActionErrors保留的request范围里,然后归来input.jsp版面要求重新输入并用html:errors提醒讹谬消息。
4. Action包括saveErrors()措施和saveMessages()措施。万一创立的ActionErrors则该当调用saveErrors(),若创立的是ActionMessages则该当调用saveMessages()措施。
saveErrors ()接收ActionMessages而不是ActionErrors;同时将其保留在request中并用一个由org.apache.struts.Globals.ERROR_KEY指定的常量”org.apache.struts.Globals.ERROR_KEY”标识这个ActionMessages,便于html:errors查找。saveMessages()措施接收ActionMessages同时将其保留在request中并用一个由org.apache.struts.Globals.MESSAGE_KEY指定的常量”org.apache.struts.Globals.MESSAGE_KEY”标识这个ActionMessages,进而让html:messages从常量Globals.ERROR_KEY中遍历获取消息。能够将其属性message设置为true,那么它将从常量Globals.MESSAGE_KEY中遍历获取消息。
5. 默认情形下html:messages从
万一你想将消息保留在session里而不是request,struts1.2供给了
struts1.1 未曾的saveMessages(HttpSession session, ActionMessagesmessages)措施和saveErrors(javax.servlet.http.HttpSession session,ActionMessages errors)措施。
InputAction.java:
Java代码
publicActionForwardexecute(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){cn.rolia.struts.form.errorexception.InputForminputForm=(cn.rolia.struts.form.errorexception.InputForm)form;//TODOAuto-generatedmethodstubStringphoneNumber=inputForm.getPhoneNumber();if(phoneNumber.length()<4){ActionErrorsmessages=newActionErrors();messages.add(org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE,newActionMessage("error.errormessage.input"));this.saveErrors(request.getSession(true),messages);returnmapping.getInputForward();}returnmapping.findForward("success");}
String temp = "Text here"; String s = new String (temp);
Actionerror和Actionmessage标签的用法
Actionerror和Actionmessage标签的用法:
这两个标签的使用,在网上挺多答案的可是都不是我想要知道的那种答案。这一次我通过自己努力的尝试暂且知道了这两个标签的的用途拿出来和大家分享下。
这两个标签的作用是一样的都是我们在前台页面传送信息到后台时在前台提示消息他们的唯一不同点就是他们Action实例的用不同方法
的返回值;
Actionerror使用的是getActionErrors()这个方法的返回值
Actionmessage使用的是getActionmessage()这个方法的返回值
那么这两个标签到底怎么使用用在什么地方我在这里给大家做个例子吧!这样才能更好的说明问题。
我使用的环境是eclipse+tomcat的开发环境
这是我课程例子,就用这个吧!
struts.xml文件配置
<actionname="3-14,15actionerror">
<result name="success">/3-14,15actionerror.jsp</result>
</action>
测试Action类:
package action;
import com.opensymphony.xwork2.ActionSupport;
public class ActionErrorTag extends ActionSupport {
//定义两个参数接收前台提交数据
private int operand1;
private int operand2;
public int getOperand1() {
return operand1;
}
public void setOperand1(int operand1) {
this.operand1 = operand1;
}
public int getOperand2() {
return operand2;
}
public void setOperand2(int operand2) {
this.operand2 = operand2;
}
public String execute() {
if(getOperand1()==123456){
addActionMessage("账号验证成功");
if(getOperand2()==123456){
addActionMessage("密码验证成功");
}else{
addActionError("密码验证失败!");
}
}else{
addActionError("账号验证失败!");
}
return SUCCESS;
}
}
前台页面实例代码:
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>
struts2 actionerror标签示例
</title>
</head>
<body>
<h3>
<!-- JSP页面中使用<s:actionerrror/>和<s:actionmessage/>>来输出ActionError和ActionMessage信息。下面是该JSP页面中使用这两个标签的示例代码:-->
<!-- 输出getActionError()方法返回值 -->
<s:actionerror/>
<!-- 输出getActionMessage()方法返回值 -->
<s:actionmessage />
<<s:form action="/3-14,15actionerror.action">
<s:textfield name="operand1" label="操作数1"/>
<s:textfield name="operand2" label="操作数2"/>
<s:submit value="代数和"/>
</s:form>
<br>
<hr size="3" color="blue">
</body>
</html>
如果那里说错了希望大家指点下 我是刚学习的哈!谢谢
activemq 控制面板里的 Number Of Pending Messages、 Messages Enqueued、Messages Dequeued含
Number Of Consumers 消费者 这个是消费者端的消费者数量
Number Of Pending Messages 等待消费的消息 这个是当前未出队列的数量。可以理解为总接收数-总出队列数
Messages Enqueued 进入队列的消息 进入队列的总数量,包括出队列的。 这个数量只增不减
Messages Dequeued 出了队列的消息 可以理解为是消费这消费掉的数量
这个要分两种情况理解
在queues里它和进入队列的总数量相等(因为一个消息只会被成功消费一次),如果暂时不等是因为消费者还没来得及消费。
在 topics里 它因为多消费者从而导致数量会比入队列数高。
简单的理解上面的意思就是
当有一个消息进入这个队列时,等待消费的消息是1,进入队列的消息是1。
当消息消费后,等待消费的消息是0,进入队列的消息是1,出队列的消息是1.
在来一条消息时,等待消费的消息是1,进入队列的消息就是2.
没有消费者时 Pending Messages 和 入队列数量一样
有消费者消费的时候 Pedding会减少 出队列会增加
到最后 就是 入队列和出队列的数量一样多
以此类推,进入队列的消息和出队列的消息是池子,等待消费的消息是水流。
ActiveMQ中消费者的onMessage消息处理问题
@夏夜流星 你好,想跟你请教个问题:
对于您当初存在的这个问题,如今我也存在,请问您这个问题该怎么解决?
在ActiveMQ中,我使用onMessage来消费消息,如果此时收到一条消息,开一个线程执行此条消息的业务逻辑,需要耗时5分钟,在此期间,客户端又发来一条消息,但是onMessage方法此时没有进行消费,而是等待第一个消息执行完才接收消费第二个消息,请问大家,如何让这两条消息并行执行而不阻塞onMessage方法呢?
关于在PRG模式中如何在刷新成功页面上删除ActionMessage和彻底清除pr的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于ActionError,ActionMessage推荐、Actionerror和Actionmessage标签的用法、activemq 控制面板里的 Number Of Pending Messages、 Messages Enqueued、Messages Dequeued含、ActiveMQ中消费者的onMessage消息处理问题的相关信息,请在本站寻找。
本文标签: