CRM-解决查询条件丢失的问题
出现原因:
项目中使用了Struts2,在输入查询条件进行查询后出现查询结果,如果此时对结果进行删除或者是编辑,即进行了action的请求,
而由于删除或编辑action在返回到列表action时,使用的是重定向,这就造成了数据的丢失,即查询的内容不见了(数据不能回显)
所以造成了在进行编辑或者删除操作后,返回查询列表时,出现了刚刚的查询丢失的情况。即失去了我们的查询结果
图:
如何解决呢?
其实只要在返回到列表action是能正确的携带刚才查询的条件,并进行回显即可解决问题。
以跳转到编辑是查询条件丢失为例:
解决步骤:
1)在跳转到editUI.action时,在条件被覆盖前,记录下条件。
strName = user.getName(); //strName是action的实例变量。
2)在editUI时, 要添加隐藏域,以便能把数据带到edit.action,这样下面的重定向才能携带查询
<s:hidden name="startTime"/>
3) 在edit.action重定向到listUI时,携带查询条件,准备进行回显。在struts.xml文件中这样配置。
<result name="list" type="redirectAction">
<param name="actionName">user_listUI</param>
<param name="user.name">${strName}</param>
<param name="encode">true</param>
</result>
3)从第二步可以看出,我们把查询条件赋在URL的屁股后面进行编码后带过去了,这样的话listUI拿到的是编了码的
条件,因此必须进行解码才行。
user.setName(URLDecoder.decode(user.getName(), "utf-8"));
这样在跳转到列表页面时才能正确的进行查询条件的回显。