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

时间:2015-02-28 11:27:05

标签: java spring spring-mvc spring-form

下面包含我的控制器类中的代码,我使用方法public String getRegistrationForm(Map model)返回一个带有弹簧形式的jsp页面,在这个方法中我设置了userTab.setIsMfaEnabled(new Boolean( true)),在提交表格后方法: public String registerUser(@ModelAttribute(" user")UserTab user,BindingResult results,Map model) 被调用作为处理程序方法,但在此方法中,属性是'_MfaEnabled'在前一个方法中设置的用户属性的值为null,并且行:System.out.println(" user.getIsMfaEnabled()为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模型类:             包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;
            }

        }

RegisterUser 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>

1 个答案:

答案 0 :(得分:0)

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

的值
 <form:input path="isMfaEnabled" />