java - Spring SimpleFormController onSubmit请求参数

标签 java spring spring-mvc

我在我的应用程序中使用 SimpleFormController 来处理表单提交。我缺少的一件事是传递的请求对象 onSubmit(request,response..)formBackingObject(..) 收到的初始请求对象不同。可能是因为它又是来自网络的新请求。

我只想在 onSubmit(..) 中使用请求对象中的相同参数,我可以在 formBackingObject(..) 中访问这些参数。

我可以将它们存储在 jsp 中并通过隐藏字段传递,但我正在尝试获得一些优雅的方法。

有什么办法可以实现吗?

编辑:

我正在重写

formBackingObject(HttpServletRequest request)`  

onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors)

我类的方法。

对于初始 View formbackingObject(..) 将被调用并且我将从请求对象中获得一些变量然后如果用户提交表单 onSubmit(..)将被调用,然后我将有另一个请求对象,它与我在 formbackingObject(..) 中收到的对象不同。

我想问的是,有什么方法可以保持 最初的“请求” 参数(request.getParameter() 种类 的...)这样我就可以在 onSubmit(..) 不发送它们 来回穿过隐藏的领域?'

最佳答案

当用户请求初始表单 View 时,将调用 formBackingObject() 方法。这是一个完全独立的 HTTP 请求,当用户提交表单时调用 onSubmit() 方法。

如果您想保存第一个 HTTP 请求的状态以便在第二个 HTTP 请求中可用,最好的选择可能是将其保存在 HTTP session 中。

例如:在您的 formBackingObject() 方法中:

HttpSession session = request.getSession();
session.setAttribute("param1", request.getParameter("param1"));
session.setAttribute("param2", request.getParameter("param2"));

并在您的 onSubmit() 方法中:

HttpSession session = request.getSession();
String param1 = (String) session.getAttribute("param1");
String param2 = (String) session.getAttribute("param2");

关于java - Spring SimpleFormController onSubmit请求参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2130683/

相关文章:

java - 循环链表以及从节点内部访问上一个/下一个

java - 在 View 状态和操作状态下评估标签有什么区别

java - Spring Webflow 2.3测试: How to mock @Autowired fields of a flow variable

java - Spring @PropertySource,如何读取不在类路径上,而是在WEB-INF下的文件

java - 如何在DesignGridLayout库中动态创建JButton值?

java - doLayout 和 include in a template in 'Java Play!' 有什么区别?

java - 在 spring boot 端点上使用自定义 jackson 映射器

java - 两个持久性单元和 "Could not resolve a persistence unit corresponding to the persistence-context-ref-name"错误

java - java中是否可以阻止类使用方法?

spring - 使用 RedisTemplate (Spring) 存储不同的数据