powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Не удается подключить валидатор к проэкту Spring MVC
3 сообщений из 3, страница 1 из 1
Не удается подключить валидатор к проэкту Spring MVC
    #39425563
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть достаточно простой проэкт спринга.
Хотел применить валидацию полей, но появляются разные эксепшини, при попытке решить этот вопрос.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
Если использую даный пример конфигурации сервлета из учебника:

<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:mvc="http://www.springframework.org/schema/mvc" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="
   http://www.springframework.org/schema/mvc
   http://www.springframework.org/schema/mvc/spring-mvc.xsd  
   http://www.springframework.org/schema/beans     
   http://www.springframework.org/schema/beans/spring-beans.xsd
   http://www.springframework.org/schema/context 
   http://www.springframework.org/schema/context/spring-context.xsd">

    <context:component-scan base-package="net.javaonline.spring.radio.controller"/>
	  <mvc:annotation-driven
validator="validator"/>

<bean id="validator" class="org.springframework.org.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="validationMessageSource" ref="messageSource" />
</bean>
   
   <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="prefix" value="/WEB-INF/jsp/" />
      <property name="suffix" value=".jsp" />
   </bean>
</beans>

То получаю такую ошибку:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet.init() for servlet ggg threw exception
	org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
	org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
	org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
	java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	java.lang.Thread.run(Unknown Source)

root cause

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0': Invocation of init method failed; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class 
.....

root cause

org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.springframework.org.validation.beanvalidation.LocalValidatorFactoryBean] for bean with name 'validator' defined in ServletContext resource [/WEB-INF/ggg-servlet.xml]; nested exception is java.lang.ClassNotFoundException: org.springframework.org.validation.beanvalidation.LocalValidatorFactoryBean
	org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1275)



Если же упростить конфигурацию к такому виду:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:mvc="http://www.springframework.org/schema/mvc" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="
   http://www.springframework.org/schema/mvc
   http://www.springframework.org/schema/mvc/spring-mvc.xsd  
   http://www.springframework.org/schema/beans     
   http://www.springframework.org/schema/beans/spring-beans.xsd
   http://www.springframework.org/schema/context 
   http://www.springframework.org/schema/context/spring-context.xsd">

    <context:component-scan base-package="net.javaonline.spring.radio.controller"/>
	  <mvc:annotation-driven/>

   
   <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="prefix" value="/WEB-INF/jsp/" />
      <property name="suffix" value=".jsp" />
   </bean>
</beans>



То эксепшн получате такой вид:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
HTTP Status 500 -

type Exception report

.....
....

root cause

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 

'org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#0': Invocation of init method failed; nested 

exception is java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.engine.ConfigurationImpl
	

org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactor

y.java:1482)

....

....
...
root cause

java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.engine.ConfigurationImpl
	org.hibernate.validator.HibernateValidator.createGenericConfiguration(HibernateValidator.java:43)
	javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:269)



Хотя в файле класа-мапера класы валидации указаны:
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.Size;
import org.springframework.format.annotation.*;
import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.format.annotation.NumberFormat;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
и
библиотеки
hibernate-validator-4.1.0.Final.jar
validation-api-1.1.0.Final.jar
validation-api-1.0.0.GA.jar
тоже подключены.
Еще интересно, что в класе контролере,
постоянно подчеркнуто красным слово @valid -- @Valid @ModelAttribute("SpringWeb") -- хотя import javax.validation.Validation присутствует.
Тоже коасным значком позначена строка http://www.springframework.org/schema/context/spring-context.xsd",
хотя если раньше последней была http://www.springframework.org/schema/mvc/spring-mvc.xsd то она была обозначена красным значком.
...
Рейтинг: 0 / 0
Не удается подключить валидатор к проэкту Spring MVC
    #39426072
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот проверил на готовом коде (проэкте) с одного интересного ресурса:
https://www.tutorialspoint.com/springmvc/springmvc_hibernate_validator.htm ,
когда анотация записана в простом виде <mvc:annotation-driven />
И та же ошибка что в моем коде.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#0':
nested exception is java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.engine.ConfigurationImpl.
...
Рейтинг: 0 / 0
Не удается подключить валидатор к проэкту Spring MVC
    #39427065
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отвечу на свой вопрос, может кому пригодится. Решение найдено только здесь: http://stackoverflow.com/questions/4302358/javax-validation. Дело было в отсутствие библиотеки slf4j-аpi-1.6.1.jаr. Однако почему то не работает валидация формата чисел и даты: @NumberFormat (применительно к типу Интегер, может он применяется только к строкам) и @DateTimeFormat - к полю типа String. Соответсвующие библиотеки import org.springframework.format.annotation.NumberFormat /DateTimeFormat подключены. Не думаю что дело в отсутствие файла message.properties, тогда б не было лиш сообщение об ошибке а валидация б не проходила. Анотации @NotNull, @Size работают.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Не удается подключить валидатор к проэкту Spring MVC
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]