Ошибка отображения представления [null] после вызова метода ManagedBean - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть страница jsf, связанная с ManagedBean с использованием Spring с JSF.

На странице есть кнопка, которая вызывает метод в компоненте для обновления одной / нескольких строк в базе данных.

Код кнопки:

 <t:div>
    <t:commandButton 
        style="margin-top: 21px; -webkit-margin-before: 23px;"
        value="#{text['label.report.resubmit']}" 
        action="#{filteredReportList.resubmitSelected}" />
 </t:div>

И код Бина

public String resubmitSelected() {
   return ("SUCCESS");
}

База данных успешно обновлена, и метод возвращает SUCCESS.Тем не менее страница попадает в исключение NullPointerException и не загружается.

Apr 12, 2019 10:50:59 AM com.sun.facelets.FaceletViewHandler handleRenderException
SEVERE: Error Rendering View[null]
java.lang.NullPointerException
 at java.lang.StringBuffer.<init>(StringBuffer.java:139)
 at com.sun.facelets.FaceletViewHandler.getRenderedViewId(FaceletViewHandler.java:763)
 at com.sun.facelets.FaceletViewHandler.buildView(FaceletViewHandler.java:505)
 at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:567)
 at org.ajax4jsf.framework.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:101)
 at org.ajax4jsf.framework.ajax.AjaxViewHandler.renderView(AjaxViewHandler.java:221)
 at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:116)
 at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:241)
 at javax.faces.webapp.FacesServlet.service(FacesServlet.java:199)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:75)
 at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:213)

Я озадачен тем, что именно вызывает это - у меня есть другая кнопка, которая делает то же самое, используя тот же код (с немного другим обновлением базы данных) - без каких-либо ошибок.

Я что-то упустил в конфигурации jsf (ресурсы приложения или что-то в этом роде)

Спасибо!

обновление:

когда я удаляю функциональность метода и просто пытаюсь вернуть «УСПЕХ», исключение все равно выбрасывается - поэтому ошибка не связана с функцией метода Java.Я изменил код метода, чтобы отразить это

1 Ответ

0 голосов
/ 15 апреля 2019

В face-config.xml не было никакого правила навигации, связанного с кнопкой. Это означало, что в приложении не было ни одной страницы для навигации по успешному вызову.

Я добавил правило навигации и больше не вижу нулевой указатель.

  <navigation-rule>
  <navigation-case>
     <from-action>#{filteredReportList.resubmitSelected}</from-action>
     <from-outcome>success</from-outcome>
     <to-view-id>/trades/search.xhtml</to-view-id>
     <redirect />
  </navigation-case>
</navigation-rule>
...