簡體   English   中英

JSF 2.0-Ajax和渲染組件

[英]JSF 2.0 - Ajax and Rendered Components

將“ rendered”屬性與ajax行為結合使用時遇到一些問題。 我將粘貼代碼,因此我認為它會更加清晰:

<h:selectOneMenu value="#{registrarVentaController.esCobroChequeString}">
  <f:selectItem itemLabel="Efectivo" itemValue="false"/>
  <f:selectItem itemLabel="Cheque" itemValue="true"/>
  <f:ajax  execute="@this" render="@form"/>
</h:selectOneMenu>

<h:panelGroup id="panelMonto">
    <span>Monto:</span>
    <h:inputText value="#{registrarVentaController.monto}" rendered="#{registrarVentaController.banCobroCheque}"/>
    <h:inputText value="#{registrarVentaController.monto}" rendered="#{not registrarVentaController.banCobroCheque}"/>    
</h:panelGroup>

我的“#{registrarVentaController}”只是一個具有適當設置器/獲取器的View范圍JSF托管Bean。

以這種方式,我的意思是,當用戶選擇選項“ Efectivo ”時,panelGroup“ panelMonto ”將得到更新,我們將看到第一個inputText,相反,當用戶選擇選項“ Check ”時,用戶將看到第二個inputText。

對於這種方法,我使用了“ f:ajax ”組件,在其中更新了整個@form以使此行為起作用,而我只想更新panelGroup“ panelMonto ”(使用render =“ panelMonto”,這根本不起作用(我什至嘗試使用全范圍分辨率:formName:panelMonto ,但沒有結果)。

我只想使用ajax =“ idComponent”或類似行為渲染工作,以根據用戶選擇的內容顯示某些部分。

最好的祝福!

注意(一種解決方案)

我設法得到了一個解決方案(作為輸入, JSF呈現為行不通 ,我有點不自在)。 我剛剛將新的表單移到了新的表單中,我將根據用戶選擇的內容對其進行過濾。 這樣,我仍然使用@form ajax的render,它將只渲染這個新表單(不是我正在使用的整個表單!)不過,我仍然想知道是否存在不使用@form以及僅使用組件的解決方案ID。

如果您與檢查該怎么辦

render=":panelMonto"

render=":formName:panelMonto"

還是行不通?

這應該只與

render="panelMonto" //because is in the same form

您可以添加更多代碼嗎? 您還可以使用瀏覽器(在Chrome中:右鍵單擊,檢查元素,網絡)進行檢查,以查看是否有任何活動嗎? 也許是因為你在渲染同一件事...

暫無
暫無

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

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