私は Vaadin 7 を試してきました。まず、私は Vaadin の初心者であり、JAVA の永続性にあまり慣れていないことを管理する必要があります。したがって、Beanの検証とその使用方法を学ぼうとしています。いくつかのチュートリアルに従いましたが、Vaadin 7 の最新かつ正しいものを判断するのは非常に困難です。それにもかかわらず、JPA コンテナーと BeanValidator をダウンロードして使用しようとしましたが、機能しません。私が使用しているコードは次のとおりです。
package com.example.firstvaadin;
import java.io.Serializable;
import org.hibernate.validator.constraints.Email;
import javax.validation.constraints.*;
public class RegisterBean implements Serializable{
public RegisterBean(String email){
this.email = email;
}
@Size(min = 5, max = 50)
private String email;
public void setEmail(String email) {
this.email = email;
}
public String getEmail() {
return email;
}
}
と
RegisterBean rbean = new RegisterBean("");
BeanItem<RegisterBean> item = new BeanItem<RegisterBean>(rbean);
TextField email = new TextField("email",item.getItemProperty("email"));
email.setImmediate(true);
layout.addComponent(email);
email.setNullRepresentation("");
しかし、次のコードで実行時例外が発生しました: email.addValidator(new BeanValidator(RegisterBean.class, "email"));
The exception is:
aused by: com.vaadin.event.ListenerMethod$MethodException: Invocation of method buttonClick in com.example.firstvaadin.LoginView$1 failed.
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:528)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:167)
at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:984)
at com.vaadin.ui.Button.fireClick(Button.java:367)
at com.vaadin.ui.Button$1.click(Button.java:56)
... 28 more
Caused by: java.lang.NoClassDefFoundError: javax/validation/MessageInterpolator$Context
at com.example.firstvaadin.RegisterView.<init>(RegisterView.java:55)
at com.example.firstvaadin.LoginView$1.buttonClick(LoginView.java:63)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:508)
... 32 more
Caused by: java.lang.ClassNotFoundException: javax.validation.MessageInterpolator$Context
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1713)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1558)
... 39 more
どのクラスが欠落しているかわかりません。休止状態の jar と validation-api.jar を追加しました。
誰か手を貸してくれませんか?
また、/WebContent/WEB-INF/lib ディレクトリにあり、Eclipse でクラスパスとして追加された jar ファイルのリストを以下に示します。
classmate-0.8.0.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
hibernate-search-engine-4.3.0.Alpha1.jar
hibernate-search-orm-4.3.0.Alpha1.jar
hibernate-validator-5.0.0.Final.jar
hibernate-validator-annotation-processor-5.0.0.Final.jar
hibernate-validator-cdi-5.0.0.Final.jar
javax.el-2.2.4.jar
javax.el-api-2.2.4.jar
jboss-logging-3.1.1.GA.jar
joda-time-2.1.jar
jsoup-1.7.1.jar
log4j-1.2.17.jar
mysql-connector-java-5.1.22-bin.jar
vaadin-sqlcontainer-1.1.0.jar
validation-api-1.0.0.GA.jar
validation-api-1.1.0.Final.jar
classnotfound 例外はなくなりましたが、新しい例外が追加されました:
java.lang.NoSuchMethodError: javax.validation.spi.ConfigurationState.getParameterNameProvider()Ljavax/validation/ParameterNameProvider; org.hibernate.validator.internal.engine.ValidatorFactoryImpl で。 com.vaadin.data.validator.BeanValidator.getJavaxBeanValidatorFactory(BeanValidator.java:167) で com.vaadin.data.validator で javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:111) で buildValidatorFactory(ConfigurationImpl.java:217) .BeanValidator.getJavaxBeanValidator(BeanValidator.java:182) の com.vaadin.data.validator.BeanValidator.validate(BeanValidator.java:115) の com.vaadin.ui.AbstractField。