为什么JSF传递的参数有时为空?
我将使用(myBean)作为参数的managedbean传递给另一个managedbean(PersonRoleSearch),以便调用第一个bean(myBean)的方法。但有时参数为null,因此我得到nullpointer异常。我无法解释为什么会发生这种情况为什么JSF传递的参数有时为空?,jsf,richfaces,codi,Jsf,Richfaces,Codi,我将使用(myBean)作为参数的managedbean传递给另一个managedbean(PersonRoleSearch),以便调用第一个bean(myBean)的方法。但有时参数为null,因此我得到nullpointer异常。我无法解释为什么会发生这种情况 <a4j:commandLink id="PersonSearch" styleClass="no-decor" status="noAjaxStatus" execute="@s
<a4j:commandLink id="PersonSearch" styleClass="no-decor"
status="noAjaxStatus" execute="@searchGemOrderGroup"
immediate="true"
oncomplete="#{rich:component('personRoleSearchPopupPanel')}.show()"
action="#{personRoleSearch.doInit(myBean)}"
render="personRoleSearchPopupPanel">
<h:graphicImage value="/resources/icons/blue/searchperson.png"
alt="#{msg['personSearch.search']}" />
</a4j:commandLink>
原因是什么?可能是bean的范围错误。查找CDI,您不必将bean作为参数传递。@Makhiel,但它可以工作98%。只是有时候是这样。你怎么解释呢?@Makhiel我怎么能在没有注入的情况下调用这些方法?@BalusC我怎么能防止这种情况?@BalusC在这种情况下很难找到最佳的代码部分。我不知道你到底需要什么。正如我之前所说的,它很难复制。如果它失败了,就没有任何保证。它能工作%98。但是,如果只有页面可见,则可以单击该按钮。这意味着managedbean应该在那里。。
public void doInit(final MyBean target){...}
public void doSomething(){
target.myBeanMethod();
...}