Ограничения проверки JSF Bean не имеют никакого эффекта

Я не мог заставить работать Java Bean Validation (JSR-303). Он не выдает ошибок и обрабатывает метод действия. Я помещаю один символ в «name» inputText, он принимает, и выполняется метод process () (аннотация размера не применяется).

Когда я помещаю один символ, я ожидаю, что метод My.Process () не будет выполняться, я не прав? Есть ли какая-то конфигурация, которую я упускаю из виду, чтобы проверка работала?

В каталоге WEB-INF / lib моего проекта у меня есть validation-api-1.0.0.GA.jar, hibernate-validator-4.2.0.Final.jar.
Сервер приложений: Tomcat 7.0.25 (внутри папки Tomcat Lib у меня есть myfaces-api-2.1.5.jar и myfaces-impl-2.1. 5.jar).
IDE: Eclipse Helios SR2

Я получаю сообщение «ИНФОРМАЦИЯ: поддержка проверки компонентов MyFaces отключена» с консоли, но у меня есть банки, как я указал.

фасоль

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.validation.constraints.Size;

@ManagedBean(name="my")
@RequestScoped
public class MyBean implements Serializable {
  @Size(min=3, message="ERROR")
  private String name;

  public String process() {...}

  ...getters, setters, etc...
}

Форма JSF

<h:form>
    <h:messages />
    <h:inputText value="#{my.name}" />
    <h:commandButton value="Save" action="#{my.process}" />
</h:form>

Я также пробовал:
@NotEmpty, @NotBlank,
@ org.hibernate.validator.constraints.Length (min = 3, message = "ERROR"),
но они тоже не работают.


person Seregwethrin    schedule 12.03.2012    source источник
comment
Ваш код работает в моей среде (GF 3.1.1, Mojarra 2.1.3). У меня нет дополнительных API для проверки, кроме API Glassfish (Java EE6 bean-validation.jar).   -  person Matt Handy    schedule 12.03.2012
comment
Я действительно упростил свой код, прежде чем писать здесь, но эта точная упрощенная версия не работает и для меня в моей среде, которую я указал выше. Я действительно устал искать проблему. В этом нет никакого смысла? Я прочитал десятки веб-страниц о проверке jsf bean-компонентов, и, по их мнению, все должно работать ...   -  person Seregwethrin    schedule 12.03.2012
comment
Я получаю сообщение ниже на консоли, я пытаюсь понять, почему он так говорит. Я установил указанные выше банки. ИНФОРМАЦИЯ: поддержка проверки компонентов MyFaces отключена   -  person Seregwethrin    schedule 12.03.2012
comment
Ха-ха, это сработало! Я загрузил bean-validator.jar откуда-то и поместил его в свой путь к классам, и теперь проверка bean-компонентов включена, тоже работает :) Спасибо, что указали на этот jar-файл, Мэтт! Но это действительно странно, что для этого jar нет информации, связанной с проверкой bean-компонентов. Я даже не могу найти точную информацию о том, к какому проекту принадлежит эта банка.   -  person Seregwethrin    schedule 12.03.2012
comment
Я исследовал bean-validator.jar, и он выглядит как комбинация validation-api.jar и hibernate-validator-4.0.2-GA.jar. Я удалил его, и теперь проверка по-прежнему работает! Иногда я боюсь никогда полностью не понять java :)   -  person Seregwethrin    schedule 12.03.2012
comment
Я мог бы решить ту же проблему с помощью maven, добавив <dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId></dependency> в мой pom.xml   -  person devsnd    schedule 21.03.2012


Ответы (2)


Хочу написать возможную проблему.

Когда у меня была эта переменная

private String Name;

Проверка не сработала, потому что геттер и сеттеры такие

private String getName(){}

Я переименовал имя в

private String name;

и он начал подтверждать :)

Наверное, в этом и была проблема.

person Seregwethrin    schedule 13.03.2012
comment
См. Также stackoverflow.com/questions/11074802/ - person Robert; 06.12.2013

Спасибо за это! К вашему сведению, координаты maven для bean-валидатора:

<dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>bean-validator</artifactId>
        <version>3.0-JBoss-4.0.2_03</version>
</dependency>
person Domenic D.    schedule 27.04.2012