0

ロード時にバッキング Bean でメソッドをトリガーしようとしています。リンクがクリックされるたびに NPE がスローされますが、その理由は何ですか? 以下にコードのスニペットを含めました。

   Error:    listener="#{userController.validate}": java.lang.NullPointerException: javax.el.ELException

 <h:form id="reg">
        <h:outputLabel value="Promo" /> :
        <h:inputText id="promocode" value="#{userController.promocode}">
            <f:ajax render=":promoimage" event="blur" listener="#{userController.validate}"/>
        </h:inputText>   
        <h:commandLink id="dummyclick" value="link">
            <f:ajax event="click" render=":promoimage" listener="#{userController.validate}"/>
        </h:commandLink>    
 </h:form>

@ManagedBean(name = "userController", eager= true)
@SessionScoped
public class UserController implements Serializable {
    public void validate(AjaxBehaviorEvent event){
        ........
        }
}

<script type="text/javascript">
    document.getElementById("reg:dummyclick").click();
</script>
4

2 に答える 2

0

私は ajax 呼び出しを削除しましたが、うまくいきました。この場合はおそらく無意味でした。ただし、なぜNPEをスローしているのか知りたいです。

<h:commandLink id="dummyclick" value="link" action="#{userController.showPromo}">
</h:commandLink>

.......

<script type="text/javascript">
    document.getElementById("reg:dummyclick").click();
</script>
于 2013-10-15T03:09:29.823 に答える
0

コマンドボタンを使用する代わりにコマンドリンクを使用する理由と、inputtextにrequired="true"を設定すると、同じボタンの検証が自動的にチェックされます。

于 2013-10-15T05:14:02.477 に答える