2013-08-01 79 views
0

我在頁面中輸入文本,命令鏈接和註銷圖像。當我在輸入文本中使用「必需」時,我的命令鏈接不起作用。否則它工作正常。帶輸入文本的CommandLink

這裏是我的代碼:

<p:commandLink action="#{loginForm.logout}"> 
    <p:graphicImage value="images/logout.png" alt="Logout" style="width: 50px;height: 50px;" title="Logout"/> 
</p:commandLink> 
<p:inputText id="fname" required="true"/> 

回答

1

命令鏈接和按鈕默認提交整個表單。在這種情況下,輸入字段正在驗證並給出「此字段是必需的」驗證錯誤(如果您有<p:messages autoUpdate="true">或已經更多地關注服務器日誌,您應該注意到)。

但是,您的註銷命令似乎完全獨立於其自身,並且所有其他輸入都以相同的形式與註銷命令完全無關。

有幾種解決方案,在推薦的順序爲:

  1. 在自己的形式將註銷命令。

    <h:form> 
        <p:commandLink value="Logout" ... /> 
    </h:form> 
    <h:form> 
        Other form. 
    </h:form> 
    

    這使得設計在技術上和語義上是最有意義的。


  2. 告訴註銷命令僅在提交時處理自身。

    <p:commandLink value="Logout" process="@this" ... /> 
    

    這將默認即到@form這意味着「整個表格」。只有當單獨的表單由於某種原因絕對不是一個選項時(例如,由於CSS設計不當和/或不熟悉基本的HTML/CSS),才使用它。


  3. 濫用immediate屬性。

    <p:commandLink value="Logout" immediate="true" ... /> 
    

    這將繞過它做所有輸入具有immediate屬性。但是,如果實際上有輸入確實需要immediate屬性來優先確認驗證,那麼這會失敗。

0

這是因爲在驗證階段被阻止的動作。將immediate="true"添加到您的commandLink,它應該可以正常工作。

欲瞭解更多信息,請參閱here