java - 为什么当我收到 ActionMessage 时,我的表中的值会被删除?

标签 java javascript jquery jsp struts2

在我的应用程序中,用户需要能够将产品添加到他们的购物篮中。我有一个页面显示产品的描述,一旦用户单击“添加”按钮,它应该添加到他的购物篮中,如果一切顺利,它会显示一条确认消息,否则会显示一条错误消息。

问题是,我的应用程序正确显示消息,但是当显示消息时,产品描述被删除。

<table>
     <tbody>
        <tr><td>ID:${product.ID}</td></tr>
        <tr><td>Name:${product.name}</td></tr>
        <tr><td>Price:${product.price}</td></tr>
         ......

         <s:if test="hasActionMessages()">
             <s:actionmessage/>
         </s:if>

         <s:form method="GET" action="add">
             <input type="hidden" name="productID" value="${prodcut.ID}"/>
         <s:submit value="Add"></s:submit>
     </tbody>
</table>

结果:

ID: 123
Name: Product1
Price: $12.2

ADD

一旦点击添加按钮,产品就会添加到购物篮

ID:
Name:
Price:
      Product is successfully added                 
ADD

我知道我可以使用 Ajax 和 JavaScript,但是如何显示服务器消息?

最佳答案

问题出在您的 JSP 中,因为您显示的请求中的产品详细信息与添加产品时使用的不同。购物篮是一种应保留在 session 中并在处理产品时清除的对象。但在清理之前,您应该将从购物篮复制的包含产品详细信息的消息添加到请求中,然后转发到您的 JSP。如果您重定向到其他操作或 JSP,请求属性将丢失。在这种情况下,如果您确实需要重定向,最好将详细信息放入 session 中。但它不应该是一个篮子对象。

关于java - 为什么当我收到 ActionMessage 时,我的表中的值会被删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16729644/

相关文章:

javascript - 如何访问executeSql函数之外的变量

jquery - jQuery 数组和 jQuery 对象之间的技术区别是什么?

java - 有序流处理元素的状态映射操作是否以确定性方式进行?

java - 如何按行自然顺序和列插入顺序对 Guava 表进行排序

javascript - 将 Polymer 3 路由更改为不同的 html 页面

javascript - 无法将参数传递给 Vue 中的导入函数

jquery - 为什么我的点击事件处理程序没有针对动态添加的链接触发?

java - OnBackPressed 不跟随 backstack;直接转到主页 fragment

java - 更改文本大小后,Android TextView 不会调整大小

javascript - 以实际尺寸显示图像