簡體   English   中英

在Jsf 2.0中無法使用Ajax渲染頁面

[英]page not get rendered using ajax in Jsf 2.0

我面臨一個非常奇怪的問題。 從我這邊調試之后,我想在論壇上發布相同的問題。

問題:我有2個JSF數據表,分別是“ TableA”和“ TableB”。 我在TableB中有一些元素,現在我想根據條件移動一些文章,以移至TableA並在TableB中刪除或不可見。

我能夠在TableA中添加元素,並且可以看到當我打印TableB中存在的元素時,也已經通過調試器從TableB中刪除了該元素,但是相同的更改未反映在UI上。

代碼是:

<div id="selectedTableId" class="ArtSlected">
<h:dataTable id="selectedArtTable" value="#{articleBean.artList1}" var="sel" width="100%" border="0" cellspacing="0"
             cellpadding="0" columnClasses="center" class="TableStyle">
  <h:column>
    <h:commandButton id="deleteArticle" image="../resources/images/Delete.png" action="#{articleBean.deleteAction}">
      <f:setPropertyActionListener target="#{articleBean.articuloPromocionVO}" value="#{sel}"/>
      <f:ajax render=":articleSelectionForm:artDescTable selectedArtTable" execute="@form"/>
    </h:commandButton>
  </h:column>
  <h:column>
    <f:facet name="header">#{msgs.mpromo_article_selection_articles_selected}</f:facet>
    #{sel.articuloNombre} - #{sel.descripcion}
  </h:column>
</h:dataTable>
</div>

在此,articleSelectionForm是表單名稱artDescTable引用TableA的形式,selectedArtTable引用TableB的形式。

我已經為<f:ajax>標記嘗試了多種組合,但是沒有任何效果。 例,

<f:ajax render=":articleSelectionForm:artDescTable selectedArtTable" execute="@form" />
<f:ajax render=":articleSelectionForm:artDescTable :articleSelectionForm:selectedArtTable" execute="@form" />
<f:ajax render=":articleSelectionForm:artDescTable :articleSelectionForm:selectedTableId:selectedArtTable" execute="@form" />

請告訴我我理解上的錯誤之處。

它必須引用組件的客戶端ID。 對於初學者來說,確定正確的客戶機ID的最簡單方法是在瀏覽器中打開頁面,右鍵單擊並查看源,然后找到JSF組件的HTML表示形式。 看起來像這樣

<table id="foo:bar:tableId" ...>

您需要精確地獲取此值,並在其前面加上:

<f:ajax render=":foo:bar:tableId" ... />

如果它沒有以默認前綴NamingContainer分隔符: NamingContainer ,則它將相對於當前NamingContainer父級解析。 這樣的組件是<h:form><h:dataTable><ui:repeat> ,復合組件等。

暫無
暫無

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

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