调用 ManagedBean 方法后呈现视图 [null] 时出错
Error Rendering View[null] after ManagedBean method call
我有一个使用 Spring 和 JSF 链接到 ManagedBean 的 jsf 页面。
页面有一个按钮,它调用 bean 上的方法来更新数据库中的 one/multiple 行。
按钮代码是:
<t:div>
<t:commandButton
style="margin-top: 21px; -webkit-margin-before: 23px;"
value="#{text['label.report.resubmit']}"
action="#{filteredReportList.resubmitSelected}" />
</t:div>
Bean代码为
public String resubmitSelected() {
return ("SUCCESS");
}
数据库更新成功,方法return成功。
但是,该页面随后遇到 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 配置中遗漏了一些东西(应用程序资源或其他东西)
谢谢!
更新:
当我删除方法功能,并尝试 return "SUCCESS" 时,仍然抛出异常 - 因此错误与 Java 方法的功能无关。我更改了方法代码以反映这一点
在 faces-config.xml 中,没有与按钮关联的导航规则。这意味着应用程序没有任何页面可以在成功调用时导航到。
我添加了一个 navigation-rule 并且不再看到空指针。
<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>
我有一个使用 Spring 和 JSF 链接到 ManagedBean 的 jsf 页面。
页面有一个按钮,它调用 bean 上的方法来更新数据库中的 one/multiple 行。
按钮代码是:
<t:div>
<t:commandButton
style="margin-top: 21px; -webkit-margin-before: 23px;"
value="#{text['label.report.resubmit']}"
action="#{filteredReportList.resubmitSelected}" />
</t:div>
Bean代码为
public String resubmitSelected() {
return ("SUCCESS");
}
数据库更新成功,方法return成功。 但是,该页面随后遇到 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 配置中遗漏了一些东西(应用程序资源或其他东西)
谢谢!
更新:
当我删除方法功能,并尝试 return "SUCCESS" 时,仍然抛出异常 - 因此错误与 Java 方法的功能无关。我更改了方法代码以反映这一点
在 faces-config.xml 中,没有与按钮关联的导航规则。这意味着应用程序没有任何页面可以在成功调用时导航到。
我添加了一个 navigation-rule 并且不再看到空指针。
<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>