Validation Hibernate验证程序和Spring Webflow的问题
我试图使用SpringWebflow和HibernateValidator注释来验证表单,但我做错了什么 如果我使用Spring验证方式(ValidationContext、MessageContext、validate${state},等等),一切都可以正常工作,但我想使用Hibernate注释,如@Email、@NotEmpty等 我读过很多论坛和Spring文档,但我不知道我做错了什么 此时,这是我的视图状态和下一个操作代码:Validation Hibernate验证程序和Spring Webflow的问题,validation,spring-webflow,hibernate-validator,Validation,Spring Webflow,Hibernate Validator,我试图使用SpringWebflow和HibernateValidator注释来验证表单,但我做错了什么 如果我使用Spring验证方式(ValidationContext、MessageContext、validate${state},等等),一切都可以正常工作,但我想使用Hibernate注释,如@Email、@NotEmpty等 我读过很多论坛和Spring文档,但我不知道我做错了什么 此时,这是我的视图状态和下一个操作代码: <var name="user" class="mypr
<var name="user" class="myproject.web.pojo.User"/>
<view-state id="startSignup" model="user">
<binder>
<binding property="email" />
<binding property="name" />
<binding property="lastName" />
<binding property="password" />
</binder>
<on-entry>
<set name="flowScope.user" value="new info.teaming.web.pojo.User()" />
</on-entry>
<transition on="dataEntered" to="lookupUser" />
</view-state>
<action-state id="lookupUser">
<evaluate expression="signupActions.lookupUser(user)" />
<transition to="startSignup" on-exception="myproject.web.service.exception.UserAlreadyExistsException" />
<transition to="saveOrder" />
</action-state>
(...)
import myproject.web.model.UsrUser;
import myproject.web.model.dao.UsrUserDAO;
import myproject.web.pojo.User;
import myproject.web.service.exception.UserAlreadyExistsException;
import javax.annotation.Resource;
import javax.validation.Valid;
import org.springframework.stereotype.Component;
import org.springframework.webflow.action.MultiAction;
import org.springframework.webflow.execution.Event;
@Component
public class SignupActions extends MultiAction {
@Resource
UsrUserDAO usrUserDAO;
private static final long serialVersionUID = 1L;
public Event lookupUser(@Valid User user) throws UserAlreadyExistsException {
try {
usrUserDAO.findByEmail(user.getEmail());
} catch (javax.persistence.NoResultException e) {
return success();
}
throw new UserAlreadyExistsException();
}
public void saveUser(UsrUser user) {
return;
}
}
(注意:如您所见,当我使用Spring验证(取消对validate方法的注释)时,表单会成功地进行验证)
最后,这是我的注册代码:
<var name="user" class="myproject.web.pojo.User"/>
<view-state id="startSignup" model="user">
<binder>
<binding property="email" />
<binding property="name" />
<binding property="lastName" />
<binding property="password" />
</binder>
<on-entry>
<set name="flowScope.user" value="new info.teaming.web.pojo.User()" />
</on-entry>
<transition on="dataEntered" to="lookupUser" />
</view-state>
<action-state id="lookupUser">
<evaluate expression="signupActions.lookupUser(user)" />
<transition to="startSignup" on-exception="myproject.web.service.exception.UserAlreadyExistsException" />
<transition to="saveOrder" />
</action-state>
(...)
import myproject.web.model.UsrUser;
import myproject.web.model.dao.UsrUserDAO;
import myproject.web.pojo.User;
import myproject.web.service.exception.UserAlreadyExistsException;
import javax.annotation.Resource;
import javax.validation.Valid;
import org.springframework.stereotype.Component;
import org.springframework.webflow.action.MultiAction;
import org.springframework.webflow.execution.Event;
@Component
public class SignupActions extends MultiAction {
@Resource
UsrUserDAO usrUserDAO;
private static final long serialVersionUID = 1L;
public Event lookupUser(@Valid User user) throws UserAlreadyExistsException {
try {
usrUserDAO.findByEmail(user.getEmail());
} catch (javax.persistence.NoResultException e) {
return success();
}
throw new UserAlreadyExistsException();
}
public void saveUser(UsrUser user) {
return;
}
}
当我使用Hibernate验证时,流到达saveUser方法,而不进行任何验证
我正在使用Spring 3:
- 弹簧3.0.5.1释放
- SpringWebFlow 2.2.1.1版本
- Hibernate验证程序4.0.2.GA
非常感谢你帮助我!:) 您是否在Spring配置XML文件中定义了验证器 根据Spring Webflow,它的定义如下:
<webflow:flow-registry flow-builder-services="flowBuilderServices" />
<webflow:flow-builder-services id="flowBuilderServices" validator="validator" />
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
您是否在Spring配置XML文件中定义了验证器 根据Spring Webflow,它的定义如下:
<webflow:flow-registry flow-builder-services="flowBuilderServices" />
<webflow:flow-builder-services id="flowBuilderServices" validator="validator" />
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
试试看,
更改:
@Resource
UsrUserDAO usrUserDAO;
作者:
使用MVC管理器
以及:
作为Spring MVC控制器,或者重用此MVC代码(如果您已经在设计它;) 试试看,
更改:
@Resource
UsrUserDAO usrUserDAO;
作者:
使用MVC管理器
以及:
作为Spring MVC控制器,或者重用此MVC代码(如果您已经在设计它;) @Jordi-抱歉,我没有注意到发布日期:)您可能已经解决了您的问题。@Jordi-抱歉,我没有注意到发布日期:)您可能已经解决了您的问题。