我跟着gwt 2.4驗證示例,並實現了整個東西到我自己的應用程序。客戶端很好。服務器端的GWT違規檢查拋出SerializationException
private void verifyRegistrationData(final RegistrationTO registration) throws ConstraintViolationException {
final Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
final Set<ConstraintViolation<RegistrationTO>> violations = validator.validate(registration);
if (violations.size() > 0) {
final Set<ConstraintViolation<?>> temp = new HashSet<ConstraintViolation<?>>(violations);
throw new ConstraintViolationException(temp);
...
,但如果我這樣做在服務器端一樣:
public void update(final RegistrationTO registration) throws IllegalArgumentException, ConstraintViolationException, TestException {
final Set<ConstraintViolation<RegistrationTO>> violations = validator.validate(registration);
if (!violations.isEmpty()) {
final Set<ConstraintViolation<?>> temp = new HashSet<ConstraintViolation<?>>(violations);
throw new ConstraintViolationException(temp);
}
...
整個事情崩潰,並顯示以下異常:
javax.servlet.ServletContext登錄:異常而調度傳入RPC調用 com.google.gwt.user.client.rpc.SerializationException:類型'org.hibernate.validator.engine.PathImpl'未包含在可由此SerializationPolicy序列化的類型集合中,或者其Class對象無法加載。爲了安全起見,這種類型不會被序列化。
這就是PathImpl看起來像休眠 - 驗證 - 4.1.0.Final-sources.jar
public class PathImpl implements Path, Serializable {
private static final long serialVersionUID = 7564511574909882392L;
...
看起來不錯(至少對我來說)
我使用GWT 2.4,驗證的API -1.0.0.GA,hibernate-validator-4.1.0.Final,gwt-servlet-deps ...
在此先感謝!
歡迎來到不確定的GWT-RPC世界。當它仍然是時間時切換到RequestFactory,這是一個建議。 –