![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Fedrus |
|
||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 20.9.2007 Репутация: нет Всего: нет |
Здравствуйте все!
Сейчас работаем на JBoss 4.2.0 (JSF 1.2) (пишим в MyEclipse). Появилась необходимость написания ReqExValidatorа (думаю это покажется интересным не только мне) 1. Создаем класс валидатора (у меня в src.controller):
2. Создаем клас тега валидатора(там же):
3.Добавляем файл описания библиотеки тегов сюда <PROJECT_HOME>/web/WEB-INF/mylib.tld содержание файла(у меня):
4. Добавляем валидатор в faces-config.xml(это скорее всего нужно чтоб использовать его как <f:validator validatorId=, хоя не знаю-это я не понял) :
5. Добавляем на странице свою библиотеку тегов и используем валидатор(у меня) : <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%> <%@ taglib uri="/WEB-INF/mylib.tld" prefix="j" %> <f:subview id="tagTestModule"> <h:form> <h:messages showDetail="true"></h:messages> <h:outputText value="Input" ></h:outputText> <h:inputText id= "input1"> <j:regexValidator regex="[A-Za-z]+"/> </h:inputText> <h:commandButton value="submit"></h:commandButton> </h:form> </f:subview> оригинал статьи(http://andrej.racchvs.com/archives/2004/03/25/jsf-a-regular-expression-validator/) И так выполнение: при первом заходе на страницу (как я понял) создается RegExValidator и назначется в переменную regex мое выражение [A-Za-z]+,но когда я ввожу в поле данные и нажимаю кнопку соответственно вызывается RegExValidator но почемуто в regex уже NULL и соответственно на строке if (!val.matches(regex)) { выбрасывается ошибка java.lang.NullPointerException. Вот такая проблемма.Помогите пожалуйста разобраться. Думаю что можно будет потом написать статью, людям пригадиться (еще плз посоветуейте литературу по Java так как я скорее всего не знаю решения как раз из-за малознания java) Вот листинг ошибки: type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception javax.servlet.ServletException javax.faces.webapp.FacesServlet.service(FacesServlet.java:256) backend.NavigationFilter.doFilter(NavigationFilter.java:62) org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) root cause java.lang.NullPointerException java.util.regex.Pattern.<init>(Pattern.java:1123) java.util.regex.Pattern.compile(Pattern.java:817) java.util.regex.Pattern.matches(Pattern.java:919) java.lang.String.matches(String.java:1921) controller.RegExValidator.validate(RegExValidator.java:21) javax.faces.component.UIInput.validateValue(UIInput.java:1013) javax.faces.component.UIInput.validate(UIInput.java:867) javax.faces.component.UIInput.executeValidate(UIInput.java:1065) javax.faces.component.UIInput.processValidators(UIInput.java:666) javax.faces.component.UIForm.processValidators(UIForm.java:229) javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1030) javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1030) javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1030) javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:662) com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100) com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251) com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117) javax.faces.webapp.FacesServlet.service(FacesServlet.java:244) backend.NavigationFilter.doFilter(NavigationFilter.java:62) org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) У кого какие предложения? Это сообщение отредактировал(а) Fedrus - 3.10.2007, 11:58 --------------------
Если вы идете через ад, идите не останавливаясь. |
||||||||
|
|||||||||
ivg |
|
||||
![]() Autonomous R&D ![]() ![]() Профиль Группа: Участник Сообщений: 686 Регистрация: 8.2.2006 Где: Екатеринбург Репутация: 32 Всего: 81 |
JSF сохраняет состояние View перед рендерингом (фаза RENDER_RESPONSE) и восстанавливает его на фазе RESTORE_VIEW. Соотв. нужно обеспечить такую возможность для вашего Валидатора. Где то читал, что для JSF 1.2 достаточно сделать класс Serializable, ну а если залезть в исходники JSF и сделать как там, то что то вроде этого:
|
||||
|
|||||
Fedrus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 20.9.2007 Репутация: нет Всего: нет |
ОГромное спасибо ivg
![]() ![]() Все заработало сейчас добавил тегу атрибут message ![]() В принципе все понятно как работает но хочу полностью разобраться, потому сейчас буду читать про StateHolder про фазы JSF (кстати может кто посоветует хорошый ресус по теме фаз JSF) Это сообщение отредактировал(а) Fedrus - 4.10.2007, 09:35 --------------------
Если вы идете через ад, идите не останавливаясь. |
|||
|
||||
Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |