2014-05-12 4 views
1

Пожалуйста, помогите мне с изучением основ Spring 3 MVC лучше, я пытался узнать о Spring JSR 303: Проверка Bean и не могла решить проблему ниже, я потратил больше в день на это уже :(Состояние HTTP 500 - обработка обработчика не удалась; вложенное исключение - java.lang.AbstractMethodError:

Я хочу, чтобы здесь была простейшая валидация. Поля имени, пароля и электронной почты в hello.jsp не могут быть пустыми, это и есть цель. На данный момент каждый раз привет .jsp попытка быть представлен со всеми полями, как пустой ниже ошибка встречается

HTTP Status 500 - обработка Handler не удалось; Вложенное исключение - java.lang.AbstractMethodError: org.hibernate.ejb.HibernatePersistence.getProviderUtil() Ljavax/persistence/spi/ProviderUtil;

стек ошибка:

HTTP Status 500 - Handler processing failed; nested exception is java.lang.AbstractMethodError: org.hibernate.ejb.HibernatePersistence.getProviderUtil()Ljavax/persistence/spi/ProviderUtil; 


type Exception report 

message Handler processing failed; nested exception is java.lang.AbstractMethodError: org.hibernate.ejb.HibernatePersistence.getProviderUtil()Ljavax/persistence/spi/ProviderUtil; 

description The server encountered an internal error (Handler processing failed; nested exception is java.lang.AbstractMethodError: org.hibernate.ejb.HibernatePersistence.getProviderUtil()Ljavax/persistence/spi/ProviderUtil;) that prevented it from fulfilling this request. 

exception 

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.AbstractMethodError: org.hibernate.ejb.HibernatePersistence.getProviderUtil()Ljavax/persistence/spi/ProviderUtil; 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:972) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 


root cause 

java.lang.AbstractMethodError: org.hibernate.ejb.HibernatePersistence.getProviderUtil()Ljavax/persistence/spi/ProviderUtil; 
    javax.persistence.Persistence$1.isLoaded(Persistence.java:78) 
    org.hibernate.validator.engine.resolver.JPATraversableResolver.isReachable(JPATraversableResolver.java:61) 
    org.hibernate.validator.engine.resolver.DefaultTraversableResolver.isReachable(DefaultTraversableResolver.java:131) 
    org.hibernate.validator.engine.resolver.SingleThreadCachedTraversableResolver.isReachable(SingleThreadCachedTraversableResolver.java:46) 
    org.hibernate.validator.engine.ValidatorImpl.isValidationRequired(ValidatorImpl.java:1242) 
    org.hibernate.validator.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:448) 
    org.hibernate.validator.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:397) 
    org.hibernate.validator.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:361) 
    org.hibernate.validator.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:313) 
    org.hibernate.validator.engine.ValidatorImpl.validate(ValidatorImpl.java:139) 
    org.springframework.validation.beanvalidation.SpringValidatorAdapter.validate(SpringValidatorAdapter.java:101) 
    org.springframework.validation.DataBinder.validate(DataBinder.java:722) 
    org.springframework.web.method.annotation.ModelAttributeMethodProcessor.validateIfApplicable(ModelAttributeMethodProcessor.java:155) 
    org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:108) 
    org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:75) 
    org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:156) 
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:117) 
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96) 
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617) 
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578) 
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 

Все баночки используемые являются:

  1. ANTLR-2.7.6.jar
  2. aopalliance-1.0.jar
  3. ASM -attrs-1.5.3.jar
  4. cglib-nodep-2 .2.2.jar
  5. CGLIB-nodep-2,2-sources.jar
  6. Обще-коллекции-2.1.jar
  7. Обще-ДБХП-1.4.jar
  8. Обще-каротаж 1.1.3.jar
  9. dom4j-1.6.1.jar
  10. гибернация-3.2.6.ga.jar
  11. спящих-аннотаций-3.3.1.GA.jar
  12. спящих-Викисклад аннотации-3.0.0.ga.jar
  13. hibernate-entit ymanager-3.3.2.GA.jar
  14. гибернации-JPA-2,0-апи-1.0.0.Final.jar
  15. зимуют-поиск-3.0.0.GA.jar
  16. зимуют-валидатор-4,2. 0.Final.jar
  17. гибернации-валидатор-КДИ-5.1.0.Final.jar
  18. hsqldb.jar
  19. Java-почты 1.4.4.jar
  20. javax.servlet.jsp.jstl- 1.2.1.jar
  21. jsch-0.1.49.jar
  22. JSTL-1.2.jar
  23. jta.jar
  24. Lucene-ядро-2.3.2.jar
  25. Lucene-текстовыделитель-2.0.0.jar
  26. MySQL-разъем-Java-5.1.21.jar
  27. org.springframework.asm-3.1.2.RELEASE.jar
  28. org.springframework.beans-3.1.2.RELEASE.банку
  29. org.springframework.context.support_3.0.5.RELEASE.jar
  30. org.springframework.context-3.1.2.RELEASE.jar
  31. org.springframework.core-3.1.2.RELEASE.jar
  32. org.springframework.expression-3.1.2.RELEASE.jar
  33. org.springframework.orm-3.1.2.RELEASE.jar
  34. org.springframework.transaction-3.1.2.RELEASE.jar
  35. org.springframework.web.servlet-3.1.2.RELEASE.jar
  36. org.springframework.web-3.1.2.RELEASE.jar
  37. сохранение-апи-1.0.jar
  38. SLF4J-апи-1.7.5.jar
  39. SLF4J-апи-1.7.7.jar
  40. весна-АОП-3.1.2.RELEASE.jar
  41. весна-3.1.2.RELEASE.jar JDBC
  42. весна-ТХ-3.1.2.RELEASE.jar
  43. валидация-апи-1.1.0 .Final.jar

* Th е контроллер: MainController.java *

package com.poc.controller; 

import java.util.Map; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.ui.Model; 
import org.springframework.validation.BindingResult; 
import org.springframework.web.bind.annotation.ModelAttribute; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.RequestParam; 

import com.poc.bean.UserBean; 
import com.poc.service.DaoService; 
import com.poc.service.MailService; 
import com.poc.service.MailServiceImpl; 
import javax.validation.Valid; 

@Controller 
public class MainController { 
@Autowired 
DaoService d; 
UserBean user; 
@Autowired 
MailService mailService; 
    @RequestMapping("/") 
     public String hello(Model model) { 
     return "hello"; 
     } 


    @ModelAttribute("user") 
    public UserBean getUserForm() { 
       return new UserBean(); 

     } 

     @RequestMapping(value = "/hi", method = RequestMethod.POST) 
     public String hi(@ModelAttribute("user")@Valid UserBean user,BindingResult result) { 


      if (result.hasErrors()) { 
       return "hello"; 
      } else { 


      d.insert(user); 
     //Send a composed mail 
      mailService.sendMail(user.getEmailid(), "Registration Acknowledgement", "You have successfully registered with us. Your password is "+user.getPasswd()); 
      String message = "Hi " + user.getName() + "!"; 
     //model.addAttribute("message", message); 
     return "redirect:/index";} 
     } 

     @RequestMapping("/index") 
     public String listContacts(Map<String, Object> map) { 

      map.put("user", new UserBean()); 
      map.put("userList", d.listAll()); 

      return "hello"; 
     } 



    } 

hello.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> 
<html> 
<!-- <style> 
.error { 
    color: #ff0000; 
} 

.errorblock { 
    color: #000; 
    background-color: #ffEEEE; 
    border: 3px solid #ff0000; 
    padding: 8px; 
    margin: 16px; 
} 
</style> --> 

<style> 
    .error { 
     color: #EF1313; 
     font-style: italic; 
    } 
</style> 



<head> 
<title>Home</title> 
</head> 
<body> 
    <h1>Hello World!</h1> 

<hr/> 
    <form:form action="hi" commandName="user"> 
<table> 
<tr> 
    <td><font face="verdana" size="2px">Name</font></td> 
    <td>:</td> 
    <td> 
    <font face="verdana" size="2"> 
    <form:input path="name" /> <form:errors path="name"></form:errors> 
    </font> 
    </td> 
</tr> 
<tr> 
    <td><font face="verdana" size="2px">Password</font></td> 
    <td>:</td> 
    <td> 
    <font face="verdana" size="2"> 
    <form:input path="passwd" /> <form:errors path="passwd"></form:errors> 
    </font> 
    </td> 
</tr> 
<tr> 
    <td><font face="verdana" size="2px">Email</font></td> 
    <td>:</td> 
    <td> 
    <font face="verdana" size="2"> 
    <form:input path="emailid" /> <form:errors path="emailid"></form:errors> 
    </font> 
    </td> 
</tr> 
<tr> 
    <td> 
    <input type="submit" value="Submit" /> 
    </td> 
</tr> 
</table> 
</form:form> 



    <h3>Users</h3> 
    <c:if test="${!empty userList}"> 
    <table class = "data"><tr> 
    <th>Name</th> 
    <th>Email</th> 
    </tr> 
    <c:forEach items= "${userList}" var = "user"> 
    <tr> 
    <td> 
    ${user.name} 
    </td> 
    <td>${user.emailid}</td> 
    </tr> 
    </c:forEach> 
    </table> 
    </c:if> 
</body> 
</html> 

Пожалуйста, дайте мне знать о том месте, где я, конечно, не хватает что-то. Если это проблема совместимости с jar, пожалуйста, укажите имена банок, которые мне нужно заменить.

Заранее спасибо.

+2

Это много для чтения, и большинство из них, скорее всего, не имеет отношения к вашей проблеме. Попробуйте представить короткую, самосохраненную, правильную (компилятивную), например: http://www.sscce.org/ – mrks

ответ

2

Версии ваших библиотек не играют вместе. Например. вы используете Hibernate ORM 3.2 (который реализует JPA 1.0), а Hibernate Validator 4.2 по умолчанию работает с JPA 2 (который реализуется Hibernate ORM 3.5). Обратите внимание, что некоторые другие ЛИЭС на вашем пути к классам не смотрите прямо:

  • Несовпадение между версиями API Hibernate ORM и JPA
  • Несовпадение между двигателем Hibernate Validator и CDI портативного расширения
  • несоответствием Bean Validation API и Hibernate Validator двигатель
  • Две различных версий SLF4J API

Я рекомендую работать с инструментом управления зависимостями (Ivy, Maven, Gradle) сортировать эти вещи .