在POST请求处理程序中获取ModelAttribute值

时间:2014-10-15 01:26:23

标签: spring-mvc

我有一个表单bean如下

public class QuestionPageBean 
{
    private String statement;
    private String options;
    // getters and setters 
}

下面是GET请求处理程序,它创建一个对象'question'并设置其字段'statement'。它还会填充要显示为“选项”字段的复选框的值列表。该页面显示“声明”和复选框列表。

    @RequestMapping(value = "/question", method = RequestMethod.GET)
    public ModelAndView initForm() 
    {
        logger.debug("Received request to show question page");

        List<String> optionList = new ArrayList<String>();
        ModelAndView model=new ModelAndView("question");
        QuestionPageBean question=new QuestionPageBean();
        question.setStatement("This is the question");
        optionList.add("option1");
        optionList.add("option2");
        optionList.add("option3");
        optionList.add("option4");
        model.addObject("optionList", optionList);
        model.addObject("command", question);
        return model;
    }

下面是页面的POST方法处理程序,用户从复选框中选择“options”字段的值并提交表单。问题是ModelAttribute'question'获取'options'的值,但'statement'保持为null。

如何在下面的控制器中获取'statement'字段的值(在页面通过上面的GET方法加载时设置)。我有没有spring mvc构造?

    @RequestMapping(value = "/question", method = RequestMethod.POST)
    public void questionFormSubmit(@ModelAttribute("question")QuestionPageBean question)
    {
        logger.debug("Question page subimtted");
        System.out.println(question.getStatement()); // prints null
        System.out.println(question.getOptions());   // prints correct value selected by user
    }

1 个答案:

答案 0 :(得分:2)

除非从表单传递,否则不会填充语句字段。为表单内的语句创建隐藏字段,然后填充它。