Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JSF Validator 
:(
    Опции темы
neveragny
Дата 13.4.2010, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 13.4.2010
Где: Keiv

Репутация: нет
Всего: нет



Добрый день, господа.

Вот проблема у меня, не могу добится того, что бы заработал валидатор, и в конфиге указал и все имена совпадают, но не хочет он работать.

не мог бы мне кто нибуть помочь?


код из jsp-шки
Код

<h:inputText id="title" value="#{controller.title}" size="35" required="true">
                              <f:validator validatorId="titleValidator" />
                          </h:inputText>
                          <h:message for="title"/>  //пробовал и с message и без


faces-config.xml
Код

<validator>
        <validator-id>titleValidator</validator-id>
        <validator-class>com.awaken.TitleValidator</validator-class>
    </validator>



И сам валидатор бин
Код

package com.awaken;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.component.UIInput;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;

/**
 * Created by IntelliJ IDEA.
 * User: ndemeshchenko
 * Date: Apr 12, 2010
 * Time: 5:21:00 PM
 */
public class TitleValidator implements Validator {
    public void validate(FacesContext facesContext, UIComponent uiComponent, Object o) throws ValidatorException {
        System.out.println("***************** IN THE VALIDATOR");
        String title = o.toString();
        if (title.equals("")) {
            FacesMessage message = new FacesMessage();
            message.setSummary("Title is required");
            throw new ValidatorException(message);
        }
    }
}


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

PM MAIL Skype GTalk   Вверх
SlavaSemushin
Дата 13.4.2010, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 13.4.2010
Где: Новосибирск

Репутация: 1
Всего: 1



А где TLD-файл?

Ну и, согласно книжке, ещё нужен "обработчик дескриптора, который расширяет класс ValidatorELTag, включающий атрибуты, представленные в файле TLD, и передающий их объекту валидатора".

Это действительно весь ваш валидатор или просто "лишь бы работал"? Если весь, то он не нужен -- required="true" у вас уже есть, просто добавьте requiredMessage и всё.

Ну и можно поступить проще (чтобы не заморачиваться с TLD-файлом) -- добавить метод в какой-либо бин, который бы валидировал значение.
PM MAIL   Вверх
neveragny
Дата 14.4.2010, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 13.4.2010
Где: Keiv

Репутация: нет
Всего: нет



за requiredMessage  спасибо, не знал.
Но я хочу конкретно через валидатор.

Цитата(SlavaSemushin @  13.4.2010,  18:16 Найти цитируемый пост)
А где TLD-файл?

Код

    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>



Цитата(SlavaSemushin @  13.4.2010,  18:16 Найти цитируемый пост)
Ну и, согласно книжке, ещё нужен "обработчик дескриптора, который расширяет класс ValidatorELTag, включающий атрибуты, представленные в файле TLD, и передающий их объекту валидатора".


А что это за обработчик дескриптора, в двух книгах, и туториалов всяких, пишут что нужно только вот это, может где-то в faces-config что-то не указал

PM MAIL Skype GTalk   Вверх
SlavaSemushin
Дата 14.4.2010, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 13.4.2010
Где: Новосибирск

Репутация: 1
Всего: 1



Так, про обработчик дескриптора не обращайте внимание -- в вашем случае он не нужен (это если бы вы собрались использовать его как тег, типа <my:requiredValidator />).

Несколько раз посмотрел на ваш код -- выглядит правильно. Предлагаю попробовать разные варианты:

- добавить <h:messages />, чтобы видеть все сообщения об ошибках
- попробовать использовать полное имя класса в качестве имени валидатора
- возможно, что-то не так со структурой JSF-документа (например, у вас отсутствует f:view)
- поместить весь код метода validate() в блок try{}catch() и логгировать возможное исключение (например, у вас там может быть NullPointerException)
- попробовать прочитать http://www.laliluna.de/articles/jsf-valida...g-tutorial.html -- вдруг что-то заметите или придумаете
- попробовать вынести валидатор в метод бина (вместо отдельного класса)

Успехов!


Это сообщение отредактировал(а) SlavaSemushin - 14.4.2010, 13:44
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0437 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.