【发布时间】:2012-03-30 22:48:24
【问题描述】:
我有一个模型:
@Entity
@Table(name = "User")
public class User implements Serializable {
private static final long serialVersionUID = 546951187473649176L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Size(min = 3, max = 25)
@Pattern(regexp = "[A-Za-z ]*", message = " wroooooong")
private String name;
/** some setters and getters **/
}
我有一个 UserController.java
@ManagedBean(name = "userController")
@SessionScoped
public class UserController implements Serializable {
private static final long serialVersionUID = -4210819542193607967L;
@EJB
private UserProvider userProvider;
@Inject
EntityManager entityManager;
@PostConstruct
public void initNewUser() {
user = new User();
}
private User user;
public void registerUser() throws ValidatorException {
try {
userProvider.registerUser(new User(),user);
} catch (Exception e) {
throw new ValidatorException(new FacesMessage(e.getMessage()));
}
}
private String name;
/** some setters and getters **/
}
UserProvider 如下所示:
@RequestScoped
@Stateful
public class UserProvider {
@Inject
private EntityManager entityManager;
public void registerUser (User newUser, String name) throws Exception {
try {
newUser.setName(name);
entityManager.persist(newUser);
} catch (Exception e){
throw e;
}
}
}
最后是我的 register.xhtml:
<h:form>
<label for="name">name</label>
<h:inputText id="name" value="#{userController.name}" required="true" />
<h:message id="register_name_error" for="name" errorClass="invalid"/>
<h:commandButton action="#{userController.registerUser()}" id="submit" value="send" />
</h:form>
当我在名称字段中输入要简短的内容时,我的堆栈中得到了这个:
javax.validation.ConstraintViolationException: Validation failed for classes [de.liedl.bachelor.model.User] during persist time for groups [javax.validation.groups.Default, ]
List of constraint violations:[
ConstraintViolationImpl{interpolatedMessage='muss zwischen 3 und 25 liegen', propertyPath=accountName, rootBeanClass=class de.demotest.model.User, messageTemplate='{javax.validation.constraints.Size.message}'}
]
但该错误永远不会返回给我的<h:message
怎么了?
我下载了一个演示应用程序,它工作起来非常简单,但这有点不同,没有提供者、控制器和模型,它只是模型和混合类......
我也试过这个,只是抛出异常,有和没有 try catch
我需要在 UserProvider 中使用哪个 Validator?
【问题讨论】:
标签: validation jsf-2 jpa-2.0