我們有一個列表顯示在屏幕的一個面板中,其中字段可重複的所有代碼都保存在不同的Facelet文件下。當我試圖根據ajax事件的偵聽器動作呈現圖像時,由於使用<ui:repeat>
(如repeatForm:repeat:2:redimage
),由於JSF正在生成索引在中間的ID,所以我得到一些更新帶有ID的圖像的問題。ui:repeat + AJAX
這是主頁:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:head>
<title>Repeat Test Demo</title>
</h:head>
<h:body>
<h:form id="repeatForm">
<ui:repeat id ="repeat" value="#{listBean.xyzList}" var="repeatListVar">
<p:panel id="genLiabPanelRender">
<ui:include src="MyScreen.xhtml" />
</p:panel>
</ui:repeat>
</h:form>
</h:body>
</html>
這一個facelet是可重複的基礎上,面板內的列表的大小。
MyScreen.xhtml
這是包括一個facelet文件:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:body class="body">
<h:panelGrid columns="4" border="0" width="90%">
<h:panelGroup style="display:block;text-align:left;width: 320px">
<h:selectBooleanCheckbox value="#{repeatListVar.primaryPolicyInd}" />
<h:outputText value="#{label.primaryCov}" />
</h:panelGroup>
<h:panelGroup style="display:block;text-align:left;width: 240px">
<h:selectBooleanCheckbox value="#{repeatListVar.abcInd1}" />
<h:outputText value="#{label.commGenLiab}" />
</h:panelGroup>
<h:panelGroup style="display:block;text-align:left;width: 180px">
<h:outputText value=" #{label.eachOccur}" style="text-align:left" />
</h:panelGroup>
<h:panelGroup style="display:block;text-align:left;width: 130px">
<p:inputMask mask="#{label.limitAmtMask}" id="genLiabEachOccAmt"
value="#{repeatListVar.a25GLEOAmt}" required="true"
style="width: 90px">
<f:ajax event="blur" render="redimage" listener="#{repeatListVar.testA25GLEOAmt}"/>
</p:inputMask>
<h:graphicImage id="redimage" url="/images/icons/redIcon.png" rendered="#{repeatListVar.testA25GLEOAmtInd}" />
</h:panelGroup>
這結束了對<h:outputText>
看起來像生成的ID:repeatForm:repeat:2:redimage
。但由於我們使用<f:ajax>
標籤,因此我們只需指定"redimage"
。標籤負責查找真實ID的內容。
我們正在調用監聽器中的方法,並將布爾指示符的值設置爲true
或false
,默認爲false
。指示器用於渲染圖像。
但是,當我們使用這個<f:ajax>
呈現基於該指標值的形象,我收到錯誤
malformedXML:在更新repeatForm:重複:2:redimage沒有找到
這是如何造成的,我該如何解決這個問題?
我在製作bean時遇到問題ScopeType.PAGE ...有沒有辦法做ui:重複使用ScopeType.SESSION? – efirat
嗯,我是usinf Seam框架。當我讀到它時,ui:repeater和AJAX一起只能在VIEW範圍內工作。但是,我無法將範圍SESSION更改爲VIEW ...所以,primefaces組件ajax行爲不起作用。我會問一個新問題。謝謝 – efirat