Java Spring SimpleFormController onSubmit请求参数
我在应用程序中使用Java Spring SimpleFormController onSubmit请求参数,java,spring,spring-mvc,Java,Spring,Spring Mvc,我在应用程序中使用SimpleFormController来处理表单提交。我缺少的一件事是在submit(request,response…)上传递的request对象 与formBackingObject(..)接收的初始请求对象不同。可能是因为它又是来自web的新请求 我只想使用onSubmit(..)中的request对象中的相同参数,我可以在formBackingObject(..)中访问这些参数 我可以将它们存储在jsp中并从jsp传递隐藏字段,但我正在尝试一些优雅的方法 有没有办法做
SimpleFormController
来处理表单提交。我缺少的一件事是在submit(request,response…)上传递的request对象
与formBackingObject(..)
接收的初始请求对象不同。可能是因为它又是来自web的新请求
我只想使用onSubmit(..)
中的request对象中的相同参数,我可以在formBackingObject(..)
中访问这些参数
我可以将它们存储在jsp中并从jsp传递隐藏字段,但我正在尝试一些优雅的方法
有没有办法做到这一点
编辑:
我压倒一切
formBackingObject(HttpServletRequest request)`
及
方法在我的课堂上
对于初始视图,formbackingObject(..)
将被调用,我将从请求对象中获得一些变量,然后如果用户提交表单,onSubmit(..)
将被调用,那么我将拥有另一个请求对象,它与我在formbackingObject(..)
中收到的请求对象不同
我想问的是,有没有什么方法可以保持
初始“请求”
参数(request.getParameter()
kind
当然…)这样我就可以在
onSubmit(..)
不发送
通过隐藏字段来回?当用户请求初始表单视图时,将调用
formBackingObject()
方法。当用户提交表单时,即调用onSubmit()
方法时,这是一个完全独立的HTTP请求
如果要保存第一个HTTP请求的状态,以便在第二个HTTP请求中可用,最好的选择可能是将其保存在HTTP会话中
例如:在您的formBackingObject()
方法中:
HttpSession session = request.getSession();
session.setAttribute("param1", request.getParameter("param1"));
session.setAttribute("param2", request.getParameter("param2"));
HttpSession session = request.getSession();
String param1 = (String) session.getAttribute("param1");
String param2 = (String) session.getAttribute("param2");
在您的onSubmit()
方法中:
HttpSession session = request.getSession();
session.setAttribute("param1", request.getParameter("param1"));
session.setAttribute("param2", request.getParameter("param2"));
HttpSession session = request.getSession();
String param1 = (String) session.getAttribute("param1");
String param2 = (String) session.getAttribute("param2");
当用户请求初始表单视图时,将调用
formBackingObject()
方法。当用户提交表单时,即调用onSubmit()
方法时,这是一个完全独立的HTTP请求
如果要保存第一个HTTP请求的状态,以便在第二个HTTP请求中可用,最好的选择可能是将其保存在HTTP会话中
例如:在您的formBackingObject()
方法中:
HttpSession session = request.getSession();
session.setAttribute("param1", request.getParameter("param1"));
session.setAttribute("param2", request.getParameter("param2"));
HttpSession session = request.getSession();
String param1 = (String) session.getAttribute("param1");
String param2 = (String) session.getAttribute("param2");
在您的onSubmit()
方法中:
HttpSession session = request.getSession();
session.setAttribute("param1", request.getParameter("param1"));
session.setAttribute("param2", request.getParameter("param2"));
HttpSession session = request.getSession();
String param1 = (String) session.getAttribute("param1");
String param2 = (String) session.getAttribute("param2");
formBackingObject()
应在下次提交时设置提供给onSubmit()
的“命令”对象。命令对象只是一个可以根据需要创建和添加属性的对象
通常,您使用服务调用(最终来自数据库)中的一些数据来填充命令对象,以显示在屏幕上,但是没有什么可以阻止您将请求中到达的数据放入formBackingObject()
命令对象中,并在调用onSubmit()
时再次将其拉回。这样做的好处是,您不会在会话中四处游荡
例如,将请求中的布尔值放入MyCommand
的formBackingObject()
中:
然后在onSubmit()
中的请求中找到该布尔值:
请注意,myCommand仅对会话可见(因此其他登录用户无法看到它,并且在会话结束时它将被销毁)。formBackingObject()
将在下次提交时设置提供给onSubmit()
的“命令”对象。命令对象只是一个可以根据需要创建和添加属性的对象
通常,您使用服务调用(最终来自数据库)中的一些数据来填充命令对象,以显示在屏幕上,但是没有什么可以阻止您将请求中到达的数据放入formBackingObject()
命令对象中,并在调用onSubmit()
时再次将其拉回。这样做的好处是,您不会在会话中四处游荡
例如,将请求中的布尔值放入MyCommand
的formBackingObject()
中:
然后在onSubmit()
中的请求中找到该布尔值:
请注意,myCommand仅对会话可见(因此其他登录用户无法看到它,并且在会话结束时会被销毁)。他使用的是spring MVC@sangram-提供更多详细信息-发生了什么,何时提交,您的页面编辑了什么,等等。我想使用调用formBacking()时收到的onSubmit()中的参数字符串。我在formBacking和onSubmit中都有请求对象。但它们是不同的(get&post)。我只是在检查是否有更简单的方法来保留初始请求的参数字符串,而不是使用隐藏字段将它们再次发送回onSubmit()。由
formBackingObject
返回的数据的范围是什么?它对所有用户都是通用的,对会话是通用的吗?这听起来像是SpringWebFlow的例子吗?你可以按照Shane的建议进行会话,或者你可以把第一个请求的值放到GET上的模型中,然后在POST上传递回来。他使用的是spring MVC@sangram-提供更多详细信息-发生了什么,何时提交,您的页面编辑了什么,等等。我想使用调用formBacking()时收到的onSubmit()中的参数字符串。我在formBacking和onSubmit中都有请求对象。但它们是不同的(get&post)。我只是在检查是否有更简单的方法来保留初始请求的参数字符串,而不是使用隐藏字段将它们再次发送回onSubmit()。由formBackingObject
返回的数据的范围是什么?它对所有用户都是通用的,对会话是通用的吗?这听起来像是SpringWebFlow的例子吗?你可以