java - 表单支持 bean 不保留已设置的属性值

标签 java spring-mvc

我正在使用这样的表单支持 bean。

public class BeanData implements Serializable{

    private String param1;
    private String param2;
    private String param3;
    private String param4="india";

    getters setters
}

然后在模型中发送 bean 对象,如下所示-

@RequestMapping(value=/formPage, method={RequestMethod.GET,RequestMethod.POST})
    public ModelAndView getPage(HttpSession session, ModelAndView modelAndView) {   

        BeanData formBean = new BeanData();
        formBean.setParam2("123456"); // this param2 doens't have any field in JSP
        modelAndView.addObject("formBean", formBean);
        modelAndView.setViewName(PAGE);

        return modelAndView;
    }
@RequestMapping(value=submitData, headers="Accept=*/*", method={RequestMethod.POST})
    public void submitData(@Valid @ModelAttribute("formBean") BeanData formBean, BindingResult result, HttpServletRequest request,HttpServletResponse response,ModelAndView modelAndView, HttpSession session) {


        LOGGER.info("param1:"+formBean.getParam1()); // Param1 has a path map in jsp field. So whatever user is puuting into form field, that is getting populated here
        LOGGER.info(" param2:"+formBean.getParam2()); // It has not been used in JSP. Though from controller it was populated before sending the bean to the jsp. but here the value is null . This is the concern
        LOGGER.info("param3:"+formBean.getParam3());// Param1 has a path map in jsp field. So whatever user is puuting into form field, that is getting populated here
        LOGGER.info("param4:"+formBean.getParam4());//thsi field also has not been used in JSP. But this property was set in bean instantiation. It is also getting retrieved successfully.


        modelAndView.setViewName(SUCCESS PAGE);

    }

我担心的是,我想使用 setter 方法设置一个 bean 属性,并希望将 bean 支持对象传递给 JSP。然后,所有属性值都应该绑定(bind)到支持对象(我使用表单字段路径属性显式绑定(bind)的内容以及我在创建 bean 对象时已经设置的内容),并且应该在 Controller 中接收它。请指导我哪里做错了。

最佳答案

如果您只想保留 JSP 中 param2 字段的值并在表单提交时取回它,您可以使用隐藏字段绑定(bind)它,如下所示:

<form:hidden path="formBean.param2"/>

它不会显示在您的 JSP 中,但它会按原样保留您的值。

另一种方法是将您的 BeanData 存储到 session 中。

关于java - 表单支持 bean 不保留已设置的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43178569/

相关文章:

java - 模拟服务抛出 nullPointerException

java - 控制Web应用程序中方法的调用率

java - ORA-12518,TNS :listener could not hand off client connection comes from a loop with heavy memory access

java - Mapbox Android SDK 第三方 vector 切片

javascript - org.thymeleaf.exceptions.TemplateInputException : Exception parsing document: template ="result", 第 28 行 - 第 23 列

java - 谁能解释一下@RequestMapping 和@RequestBody 是如何工作的?

rest - 嵌套 Rest 资源在 Jhipster 中引发约束违规

java - 为什么我恢复应用程序后 SurfaceView 会被剪切?

java - 使用用户定义 View 的 Spring MVC 3 用户定义异常处理

spring - 添加spring-context-3.0.0.RELEASE.jar后Tomcat 7不启动