簡體   English   中英

在更改h:selectOneMenu時,h:inputText不是ajax呈現的

[英]h:inputText is not ajax-rendered on change of h:selectOneMenu

我有這段代碼,用於選擇要在jsf表中顯示的行數:

<!-- Set rows per page -->
<h:outputLabel for="rowsPerPage" value="Rows per page" />
<h:inputText id="rowsPerPage" value="#{AccountsController.rowsPerPage}" size="3" maxlength="3" />
<h:commandButton styleClass="bimage" value="Set" action="#{AccountsController.pageFirst}" >
    <f:ajax render="@form" execute="@form"></f:ajax>
</h:commandButton>&nbsp;
<h:message for="rowsPerPage" errorStyle="color: red;" />

我想以這種方式編輯代碼:我想用h:selectOneManu替換代碼,並使用AJAX支持插入自定義值的選項:

<h:selectOneMenu id="setrows" value="#{AccountsController.rowsPerPage}" converter="javax.faces.Integer" maxlength="3">                                    
    <f:selectItem itemValue="10" itemLabel="10" />
    <f:selectItem itemValue="50" itemLabel="50" />
    <f:selectItem itemValue="100" itemLabel="100" />
    <f:selectItem itemValue="500" itemLabel="500" />                                    
    <f:selectItem itemValue="332" itemLabel="Custom" />
    <f:ajax render="customrowperpage" />
</h:selectOneMenu>&nbsp;
<h:inputText id="customrowperpage" value="#{AccountsController.rowsPerPage}" rendered="#{AccountsController.rowsPerPage == '332'}" required="true" />

但是由於某種原因,代碼無法正常工作。 您能幫我發現問題嗎? 當我從h:selectOneMenu列表中選擇AJAX調用以更新表單時,我也想更新AJAX功能。

有兩個問題。

首先,由於JavaScript在客戶端運行,因此您無法ajax更新未呈現給客戶端的JSF組件。 這樣,HTML DOM樹中就沒有任何內容可供JavaScript選擇,操作和替換。 您應該改為ajax-update一個始終呈現給客戶端的JSF組件。

<h:panelGroup id="customrowperpage">
    <h:inputText value="#{AccountsController.rowsPerPage}" required="true" 
        rendered="#{AccountsController.rowsPerPage == '332'}" />
</h:panelGroup>

另請參見為什么要進行Ajax更新時,為什么需要在另一個組件中嵌套帶有render =“ =” {some}“的組件?

其次, Integer 永遠不 等於 String 您正在rendered屬性中針對String '332'測試Integer rowsPerPage 刪除那些單引號使它成為一個有價值的數字。

<h:panelGroup id="customrowperpage">
    <h:inputText value="#{AccountsController.rowsPerPage}" required="true" 
        rendered="#{AccountsController.rowsPerPage == 332}" />
</h:panelGroup>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM