在Spring MVC中提交后重定向到相同的搜索页面

时间:2011-11-11 07:20:26

标签: spring spring-mvc

我有一个用户可以搜索帐户详细信息的场景,搜索结果将以表格格式显示,并带有pagnation(1,2 ..)。 在结果页面上,用户可以通过分页来回遍历,并可以在任何页面上更改帐户详细信息并提交相同的内容。 直到现在一切都很好。现在我想要的是在同一个搜索页面()上转发用户,并提交相同的搜索条件。

例如:用户搜索名称为“abc”的所有人的帐户详细信息,表格中有26行,因此系统将以10(第1页)-10的形式显示结果(第2页)-6(第3页)。

现在,用户转到第2页并输入一些值,然后在提交后点击提交,用户应转到第2页,并使用相同的标准(名称“abc”)。

请提供一些意见。

由于

1 个答案:

答案 0 :(得分:0)

我用MVC拦截器解决了一个类似的(不同的)场景。

对我来说问题是,我有表格。如果用户在表单中输入了某些内容,并且该请求被接受,那么他通常会被重定向到相应的显示页面。 (REST模式)。但是,如果从特殊页面“调用”from,则有些形式应该表现不同。

示例:因此,如果用户转到页面“A”,从那里到带有表单的页面“F”,输入值并提交,然后他(在服务器中执行相应的操作之后)重定向到PAGE “S”。但是如果用户以页面“B”开头,则转到表单页面“F”,提交表单,然后他应该被重定向到“B”。

它以这种方式工作: 我有一个特殊的请求参数RETURN_ACTIVATE此参数包含一个URL。 MVC拦截器检测当前请求是否具有此参数。 (为了便于使用,MVC拦截器还检查RETURN_ACTIVATE是否退出,但是为空,然后用HTTP referer替换它的值。

  • 现在,如果MVC拦截器检测到当前请求具有此RETURN_ACTIVATE参数且Web控制器响应是重定向,则它会将重定向网址替换为RETURN_ACTIVATE参数中的重定向网址
  • 但是如果Web控制器响应是普通的表单视图,那么Interceptor只会将一个名为RETURN_ACTIVATE的值添加到模型中。它的值是RETURN_ACTIVATE参数的值。

在我的每个表单中,如果模型包含值RETURN_ACTIVATE,则添加名为RETURN_ACTIVATE的隐藏参数(隐藏参数的值当然是模型中的值)。

所以最后我需要做的就是让完整的东西运行,就是在页面“B”中添加一个没有值的参数,用户可以使用它来获取页面“F”。 <a href="f?RETURN_ACTIVATE">formPage</a>然后MVC Interceptor将带有referer URL的参数添加到模型中,因为Controller返回Form的View。 JSP将隐藏值<input type="hidden" name="RETURN_ACTIVATE" value="b"/>添加到表单中。 当用户提交表单,并且控制器响应重定向到“s”时,MVC Intercepter将“c”改为“b”。

所以我的解决方案有点复杂,因为用例更复杂,但我希望它能给你一些想法。