jsf 驗證空值

com.sun.faces.renderkit.RenderKitUtils.getCommandLinkOnClickScript(RenderKitUtils.java:934)

 

最近剛接觸JSF,遇到一個問題,折磨了一兩天,終於解決了,但是不知道原因,先記下來,等項目不忙了,再研究,

 

JSP code:

 

<h:outputLabel for="name" value="Name: " styleClass="required"/>
    <a4j:region renderRegionOnly="true">
        <h:inputText id="name" value="#{agencyEditBean.agency.agencyName}"
             requiredMessage="Agency name is required."
             required="true" maxlength="50" size="30">
        <a4j:support event="onblur" action="null" ajaxSingle="true"/>
        </h:inputText>
        <rich:message for="name" errorClass="error"/>
    </a4j:region>

 

<a4j:commandButton id="save" action="#{agencyEditBean.doSaveAgency}"
                                         value="Save" style="margin:5px;" reRender="page:form" />

 

name不能爲空,我在這裏做了一個非空的判斷,在create時,一切正常,不輸入name,click save buttton, 返回當前畫面,提示"Agency name is required."。但是在edit時,不輸入name,click save buttton,出現異常信息:

java.lang.NullPointerException
    com.sun.faces.renderkit.RenderKitUtils.getCommandLinkOnClickScript(RenderKitUtils.java:934)
    com.sun.faces.renderkit.html_basic.CommandLinkRenderer.getOnClickScript(CommandLinkRenderer.java:295)
    com.sun.faces.renderkit.html_basic.CommandLinkRenderer.renderAsActive(CommandLinkRenderer.java:357)
    com.sun.faces.renderkit.html_basic.CommandLinkRenderer.encodeBegin(CommandLinkRenderer.java:165)
    javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:788)
    com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:269)

 

網上查了半天,發現JSF的文檔真是太少了,找了半天源碼,也沒找到,鬱悶了一天的時間,最後看着代碼發呆,突然看到

<a4j:commandButton 的屬性reRender="page:form"(注:我是改的別人的代碼),不明白爲什麼要加上reRender,決定去掉試試,結果一切OK,從網上找了找相關說明,也不太明白,等以後有時間了再研究吧。鬱悶啊。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章