属性 在一个控制器方法中设置的模型属性在另一个控制器方法中不可用

Property on model attribute set in one controller method is not available in another controller method

以下包含我的控制器 class 中的代码,我正在使用方法 public String getRegistrationForm(Map model) to return a jsp-page with a spring 表单,在这个方法中我设置 userTab.setIsMfaEnabled(new Boolean(true)) ,提交表单时的方法: public String registerUser(@ModelAttribute("user") UserTab 用户,BindingResult 结果,地图模型) 作为handler方法被调用,但是在这个方法中,前面方法中设置的user属性的属性 'isMfaEnabled'为null,并且line:System.out.println("user.getIsMfaEnabled() is nul");正在日志中打印。请告诉我这里出了什么问题。

@Controller
@RequestMapping("/register")
public class RegisterUserController {   
    @Autowired
    RegisterUserService registerUserService;

    @RequestMapping(value = "/registeruser.action" , method =     RequestMethod.POST)
    public String registerUser(@ModelAttribute("user") UserTab user , BindingResult results , Map<String,Object> model){
        System.out.println("executing regsiterUser ");
        if(user == null)
           System.out.println(", user is null");
        if(results == null)
           System.out.println("results is null");

        UserTabValiator userTabValidator = new UserTabValiator();
        if(user.getIsMfaEnabled() == null)
            System.out.println("user.getIsMfaEnabled() is nul");
        userTabValidator.validate(user, results);
        if(results.hasErrors()){
           return "registeruser";
        }
        try {
            boolean val = registerUserService.isExistingUsername(user.getLoginName());
            if(val){
                System.out.println("username already exists");
                model.put("message", "username already exists");
                return "registeruser";
            }
           if(!val){
               model.put("username", user.getLoginName());
               model.put("message", "registration success ... ");
               return "registrationsuccess";
           }            
        } catch (Exception e) {
            System.out.println("exception thrown");
            e.printStackTrace();
            return "errorpage";
        }
       return "errorpage";
 }


   @RequestMapping(value="/registeruser.view", method=RequestMethod.GET)
   public String getRegistrationForm(Map<String,Object> model){
       System.out.println("executing getRegistrationForm");
       if(registerUserService == null)
       System.out.println("register user service is null");
       try{
         ArrayList<MfaQuestion> allMfaQuestions = (ArrayList<MfaQuestion>) registerUserService.getAllMfaQuestions();
        UserTab userTab =  new UserTab();
        userTab.setIsMfaEnabled(true);
        model.put("user", userTab);
        model.put("message", "register new user");
        model.put("allMfaQuestions", allMfaQuestions);
        return "registeruser";
       }
       catch(Exception e){
           e.printStackTrace();
           model.put("user", new UserTab());            
           model.put("message", "unable to get MFA questions");
           return "registeruser";
       }
    }   
}

UserTab 模型 Class: 包裹 com.persistance.beans;

        import java.util.Date;

        public class UserTab {

            private Integer userTabID;
            private String loginName;
            private String password;
            private Date created;
            private Date lastUpdated;
            private Date lastLoginAttempt;
            private Boolean isAccountLocked;
            private Integer loginFailsNumber;
            private Boolean isMfaEnabled;
            private UserMfaMap userMfaMap;

            public String toString(){
                String str ="";
                System.out.println("[userTabID , loginName ,  password");
                return str;

            }

            public UserMfaMap getUserMfaMap() {
                return userMfaMap;
            }

            public void setUserMfaMap(UserMfaMap userMfaMap) {
                this.userMfaMap = userMfaMap;
            }

            public UserTab() {
                super();
            }


            public String getLoginName() {
                return loginName;
            }
            public void setLoginName(String loginName) {
                this.loginName = loginName;
            }
            public String getPassword() {
                return password;
            }
            public void setPassword(String password) {
                this.password = password;
            }
            public Date getCreated() {
                return created;
            }
            public void setCreated(Date created) {
                this.created = created;
            }


            public Date getLastUpdated() {
                return this.lastUpdated;
            }
            public void setLastUpdated(Date lastUpdated) {
                this.lastUpdated = lastUpdated;
            }
            public Date getLastLoginAttempt() {
                return lastLoginAttempt;
            }
            public void setLastLoginAttempt(Date lastLoginAttempt) {
                this.lastLoginAttempt = lastLoginAttempt;
            }
            public Boolean getIsAccountLocked() {
                return isAccountLocked;
            }
            public void setIsAccountLocked(Boolean isAccountLocked) {
                this.isAccountLocked = isAccountLocked;
            }
            public Integer getLoginFailsNumber() {
                return loginFailsNumber;
            }
            public void setLoginFailsNumber(Integer loginFailsNumber) {
                this.loginFailsNumber = loginFailsNumber;
            }
            public Boolean getIsMfaEnabled() {
                return isMfaEnabled;
            }
            public void setIsMfaEnabled(Boolean isMfaEnabled) {
                this.isMfaEnabled = isMfaEnabled;
            }

            public Integer getUserTabID() {
                return userTabID;
            }

            public void setUserTabID(Integer userTabID) {
                this.userTabID = userTabID;
            }

        }

注册用户 JSP 页面:

            <form:form method="POST" action="${pageContext.request.contextPath}/register/registeruser.action" commandName ="user">
           <table>
            <tr>
                <td><form:label path="loginName">UserName</form:label></td>
                <td><form:input path="loginName" /></td>
                <form:errors path="loginName" cssClass="error"/>
            </tr>
            <tr>
                <td><form:label path="password">Password</form:label></td>
                <td><form:input path="password" /></td>
                <form:errors path="password" cssClass="error"/>
            </tr>

            <div id="question1" class="questionblock">
            <tr>
                <form:select path="userMfaMap.question1" > 
                <c:forEach items="${allMfaQuestions}" var="mfaQuestion">
                    <form:option  value="${mfaQuestion.mfaQuestionId}">
                      <c:out value="${mfaQuestion.mfaQuestion}" />        
                   </form:option>                     
                </c:forEach>
                </form:select>
              </tr>
              <tr>
                <td><form:label path="userMfaMap.answer1">Answer:</form:label></td>
                <td><form:input path="userMfaMap.answer1" /></td>
                <form:errors path="userMfaMap.answer1" cssClass="error"/>
            </tr>
            </div>
            <div id="question2" class="questionblock">   
            <tr>
                <form:select path="userMfaMap.question2">
                <c:forEach items="${allMfaQuestions}" var="mfaQuestion">
                    <form:option  value="${mfaQuestion.mfaQuestionId}">
                      <c:out value="${mfaQuestion.mfaQuestion}" />        
                   </form:option>                     
                </c:forEach>
                </form:select>
            </tr>
            <tr>
                <td><form:label path="userMfaMap.answer2">Answer:</form:label></td>
                <td><form:input path="userMfaMap.answer2" /></td>
                <form:errors path="userMfaMap.answer2" cssClass="error"/>
            </tr>
            </div>
            <div id="question3" class="questionblock">
            <tr>
               <form:select path="userMfaMap.question3">
                <c:forEach items="${allMfaQuestions}" var="mfaQuestion">
                    <form:option  value="${mfaQuestion.mfaQuestionId}">
                      <c:out value="${mfaQuestion.mfaQuestion}" />        
                   </form:option>                     
                </c:forEach>
                </form:select>
            </tr>
            <tr>
                <td><form:label path="userMfaMap.answer3">Answer:</form:label></td>
                <td><form:input path="userMfaMap.answer3" /></td>
                <form:errors path="userMfaMap.answer3" cssClass="error"/>
            </tr>
            </div>

            <tr>
                  <td><input type="submit" name="submit" value="Submit"></td>
            </tr>
        </table>  
        </form:form>

在JSP表单中添加代码绑定isMfaEnabled的值

 <form:input path="isMfaEnabled" />