嗨,我是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>
答案 0 :(得分:1)
找到解决此问题的方法。在我的spring-servlet.xml中,我有<context:annotation-config>
但不是<mvc:annotation-driven />
。
<context:annotation-config>
支持一些注释,但@Valid
我需要<mvc:annotation-driven />
。添加后,我的验证运行正常。
虽然我没有想出这两个标签之间的完全差异。