无法在Spring MVC中使用BindingResult和tile验证表单

时间:2015-10-08 06:07:07

标签: spring-mvc tiles

嗨,我是Spring MVC的新手。我正在尝试使用基于注释的验证创建1个登录页面。由于我保留了@NonEmpty用户ID和密码,我希望当用户输入任何内容并提交时,验证应该失败。但是当用户没有输入任何内容时,登录控制器中的if块(result.hasErrors())没有被执行。我尝试了不同的方法,但对我来说仍然没有好结果。

LoginController.java

dat1 <- dat[-2,]
lst <- list(dat, dat1)
nC1 <- max(sapply(lst, ncol))
nR1 <- max(sapply(lst, nrow))

m2 <- matrix(0, ncol=nC1, nrow=nR1, dimnames=list(paste0('month', 
        c(1,6, 12,24)), LETTERS[1:8]))
lst1 <- lapply(lst, function(x) {
          m2[rownames(x), colnames(x)] <- as.matrix(x)
         m2  })
lapply(lst1, function(x) {m1 <- t(x >1)
         i1 <- max.col(m1, 'first') * NA^(!rowSums(m1))
  as.numeric(as.character(factor(i1, levels= 1:4, labels=c(1, 1.5, 2,3))))
 })
#[[1]]
#[1]  NA 3.0  NA 1.5  NA  NA 1.5 1.5

#[[2]]
#[1] NA  3 NA NA NA NA  3 NA

User.java

public ModelAndView doLogin(HttpServletRequest request, @Valid @ModelAttribute("user") User user, BindingResult result, Model model) {
     if(result.hasErrors()) {
          return new ModelAndView("loginForm");
     }
  }

loginForm.jsp中

public class User {
@NonEmpty
private String userID;
@NonEmpty
private String password;
.
.
.
}

弹簧servlet.xml中

<body>
    <form:form modelAtrribute="user" method="POST" commandName="user">
         User ID:
             <input type="text" name="userID"/>
             <form:errors path="userID"/>
         Password:
             <form:password path="password"/>
             <form:errors path="password"/>
         <input type="submit" value="Login"/>
    </form>
</body>

tiles.xml

<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" id="viewResolver">
<property name="viewClass">
    <value>
        org.springframework.web.servlet.view.tiles2.TilesView
    </value>
</property
</bean>

<bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer" id="tilesConfigurer">
<property name="definitions">
     <list>
          <value>/WEB-INF/tiles.xml</value>
     </list>
</peroperty>
</bean>

1 个答案:

答案 0 :(得分:1)

找到解决此问题的方法。在我的spring-servlet.xml中,我有<context:annotation-config>但不是<mvc:annotation-driven />

<context:annotation-config>支持一些注释,但@Valid我需要<mvc:annotation-driven />。添加后,我的验证运行正常。

虽然我没有想出这两个标签之间的完全差异。