调用ManagedBean方法后,错误呈现View [null]

时间:2019-04-12 10:36:03

标签: java spring spring-mvc managed-bean

我有一个使用Spring和JSF链接到ManagedBean的jsf页面。

页面上有一个按钮,该按钮调用Bean上的方法来更新数据库中的一个/多个行。

按钮代码为:

 <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");
}

数据库更新成功,并且该方法返回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配置中的某些内容(应用程序资源或其他内容)

谢谢!

更新:

当我删除方法功能并尝试返回“ SUCCESS”时,仍然会引发异常-因此该错误与Java方法的功能无关。我更改了方法代码以反映这一点

1 个答案:

答案 0 :(得分:0)

在faces-config.xml中,没有与该按钮关联的导航规则。这意味着该应用程序没有任何页面可以成功调用。

我添加了navigation-rule,并且不再看到nullpointer。

  <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>