webwork token的使用中遇到的问题
最近在做一个产品的管理模块(只是基本的增删改功能),遇到了这样一个问题,当编辑人员添加完一个产品后,页面跳转到产品列表页,显示了新添加的产品,按F5键,列表页刷新,但是确又增加了一个同样的产品,再按F5,又增加一个。
我使用的是webwork,再此描述一下action与jsp的跳转情况:
首先有一个入口进入产品列表页,进入列表页会显示所有产品,在该页面的顶部有操作按钮(增删改),单击[添加]进入产品信息页,填写产品信息后,单击[确定],跳回到产品列表页,并显示新添加的产品。
ProductActon.getAllProduct() -> productList.jsp -> ProductAction.gotoProductInfo() -> productInfo.jsp ->
ProductAction.addProduct() -> ProductAction.getAllProduct() -> productList.jsp
为了避免F5刷新添加新对象的问题,我使用了token。
首先在产品信息页productInfo.jsp内加入了<ww:token name="productInfo.token"/>
并且在action内,用request获取了页面token的值,并与session中的值进行判断,作出是否添加产品的操作。
虽然暂时解决了上面的问题。但是又面临了新的问题,我不可能在每个对数据进行操作的地方都加入判断,那会是一个很不聪明的办法,所以查找了一些网络上的资料,token可以在xwork-product.xml内进行配置,但是基本都是制定一个错误页面,当判定是重复提交时,则跳转到这个错误页面。这样就与我的跳转逻辑有冲突。
所以我想请教一下大家,能否在不破坏我的跳转逻辑的情况下,在xwork-product.xml对跳转进行配置。
xwork-product.xml如下:
<xwork>
<package name="product" extends="default">
<action name="product" class="com.xuan.product.action.ProductAction">
<result name="productList">/product/productList.jsp</result>
<result name="productInfo">/product/productInfo.jsp</result>
</action>
</package>
</xwork>
------解决方案--------------------
不能配置ACTION
forward么
帮顶
------解决方案--------------------
首先有一个入口进入产品列表页,进入列表页会显示所有产品,在该页面的顶部有操作按钮(增删改),单击[添加]进入产品信息页,填写产品信息后,单击[确定],跳回到产品列表页,并显示新添加的产品。
最根本有效的办法是:单击[确定],跳回到产品列表页,并显示新添加的产品。 (此处用redirect跳转)
<result name="productList" type="redirect">/product/productList.jsp </result>
------解决方案--------------------
可能是你传入了一些查询条件吧,查询条件可以放在session中,这样避免了来回传值带来的麻烦
这才是合理的方式
------解决方案--------------------参数放入session 是不明智的! 你的问题解决了,但是 增大了内存开销。对服务器要求高。
你可以 用令牌的思想 建个 baseaction 负责 判断 跳转
------解决方案--------------------