Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF: Не работает валидатор при обновлении / 5 сообщений из 5, страница 1 из 1
23.09.2015, 22:44
    #39059896
z3r9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: Не работает валидатор при обновлении
Может кто-то сталкивался. При обновлении записи не работает валидатор. Если сделать валидатор через ajax:

Код: html
1.
2.
3.
4.
<h:inputText id="host" value="#{testMB.instance.name}" required="true">
    <f:validator binding="#{nameValidator}" />
    <f:ajax event="blur" render="nameMessage"/>
</h:inputText>



То при первом нажатии на кнопку "Сохранить":
Код: html
1.
<h:commandButton type="submit" action="#{testMB.save}" value="Сохранить"/>


Валидатор сработает по событию blur, а при втором нажатии выдаст ошибку:
Код: xml
1.
Error Rendering View[/pages/test.xhtml]: java.lang.NullPointerException


При этом перекидывает на урл без ID. Если убрать ajax blur в поле то эта ошибка с первого клика произойдет.

Если делать валидатор через actionListener вот так:
Код: html
1.
<p:commandButton update="@form" actionListener="#{testMB.save}" value="Сохранить"/>



То все работает.

Валидатор не работает именно при обновлении записи по ID.

Инициализация в бине и метадата:

В бине инициализация:
Код: 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.
public Entity getInstance() {

        if (instance == null) {
            if (id != null) {
                instance = loadInstance();
            } else {
                instance = createInstance();
            }
        }

        return instance;
    }

    public Entity loadInstance() {
        return (Entity) getDao().findOne(getId());
    }

    public Entity createInstance() {
        try {
            return entityType.newInstance();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }



и метадата:
Код: html
1.
2.
3.
<f:metadata>
    <f:viewParam name="testId" value="#{testMB.id}"/>
</f:metadata>


Почему не хочет работать валидация с обычной кнопкой и ID?
...
Рейтинг: 0 / 0
24.09.2015, 15:42
    #39060462
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: Не работает валидатор при обновлении
Насчет валидатора сложно сказать, не видя код и стектрейс.
То же относится и к viewparam, но можно предположить, что метод save() не возвращает строку, содержащую параметр "includeViewParams=true" (либо сам id), вот id и теряется. Если метод save() не предполагает никакой навигации, то правильнее его использовать как actionListener. Атрибут action не является обязательным для h:commandButton.
...
Рейтинг: 0 / 0
24.09.2015, 16:31
    #39060516
z3r9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: Не работает валидатор при обновлении
ivanra, а разве валидатор должен пропускать не правильные данные? Ведь метод "save" при не верных данных вообще не должен выполнятся.

У меня в навигационных правилах указанно:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<navigation-case>
    <from-action>#{testMB.save}</from-action>
    <from-outcome>success</from-outcome>
    <to-view-id>/pages/test.xhtml</to-view-id>
        <redirect>
            <view-param>
                <name>testId</name>
                <value>#{testMB.id}</value>
            </view-param>
       </redirect>
</navigation-case>


У меня выводится ошибка точно такая же как будто я просто перехожу на страницу test.xhtml без ?testId=1. Если ввести правильные данные то все работает. И я еще пробовал использовать стандартную валидацию по длине, с ней то же самое.

Stack Trace
Код: xml
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.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
javax.servlet.ServletException
javax.faces.webapp.FacesServlet.service(FacesServlet.java:667)
io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:86)
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:130)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60)
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:316)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:122)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:157)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:168)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:48)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:158)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:205)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:120)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:53)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:91)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:213)
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:176)
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60)
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85)
io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)
io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:72)
io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
io.undertow.servlet.handlers.ServletInitialHandler.jrHandle(ServletInitialHandler.java)
org.zeroturnaround.javarebel.integration.servlet.undertow.cbp.ServletInitialHandlerCBP.handleRequest(ServletInitialHandlerCBP.java:101)
io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:282)
io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:261)
io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:80)
io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:172)
io.undertow.server.Connectors.executeRootHandler(Connectors.java:199)
io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:774)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:745)

...
Рейтинг: 0 / 0
25.09.2015, 12:18
    #39061141
olegeos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: Не работает валидатор при обновлении
может добавить message для этого поля?
...
Рейтинг: 0 / 0
25.09.2015, 12:43
    #39061179
z3r9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: Не работает валидатор при обновлении
olegeos, сообщение есть.

В общем подсказали что нужно вот так кнопку делать:
Код: html
1.
2.
3.
4.
<h:commandButton ...>
    <f:param name="site" value="#{generated.site}" />
    <f:param name="serviceId" value="#{generated.serviceId}" />
</h:commandButton>
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF: Не работает валидатор при обновлении / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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