ui:repeat
에 여러 구성 요소의 유효성을 검사하려고합니다.SiteBean의`ui : repeat`에서`UIInput`을 어떻게 얻을 수 있습니까?
UIInput
을 SiteBean의 ui:repeat
에서 어떻게 얻을 수 있습니까?
<f:event listener="#{siteBean.listenerMyListener}" type="preValidate" />
<ez:inputText id="txtMY" required="true" value="Hallo" />
<ui:repeat
id ="myRepeat"
var="item"
value="#{siteBean.myList}"
varStatus="status">
<ez:panel style="margin-bottom: 7px; #{status.even ? 'background-color: #E6EFC2;' : 'background-color: #e5f1fa;'}">
<h:messages for="hiddenValidation" />
<h:inputHidden id="hiddenValidation" value="" />
<h:outputText value="Rechnung vom:" />
<ez:inputText id="txtDatum" value="#{item.datum}"
style="width: 100px; text-align: right;">
<f:convertDateTime pattern="dd.MM.yyyy" />
</ez:inputText>
<br /><br />
<h:outputText value="Netto:" />
<ez:inputText id="txtNetto" required="true" value="#{item.netto}" style="width: 100px; text-align: right;">
<f:convertNumber pattern="###0.00" />
<f:validateBean />
</ez:inputText>
<br /><br />
<h:outputText value="Brutto:" />
<ez:inputText id="txtBrutto" required="true" value="#{item.brutto}" style="width: 100px; text-align: right;">
<f:convertNumber pattern="###0.00" />
</ez:inputText>
</ez:panel>
</ui:repeat>
콩 코드 :
JSF 코드는
public void listenerMyListener(ComponentSystemEvent event) {
FacesContext context = FacesContext.getCurrentInstance();
UIComponent components = event.getComponent();
UIViewRoot viewRoot = FacesContext.getCurrentInstance().getViewRoot();
UIInput search_txtMY = (UIInput) viewRoot.findComponent("frmMY:txtMY");
String value_txtMY = search_txtMY.getLocalValue().toString(); // Hallo
UIInput search_txtDatum = (UIInput) viewRoot.findComponent("frmMY:myRepeat:0:txtDatum"); // NULL
String value_txtDatum = search_txtDatum.getLocalValue().toString(); // java.lang.NullPointerException
}
''내의 구성 요소는 JSF 트리에 복사되지 않는다고 이해합니다. 즉, 'txtDatum'에 대한 UIInput 객체는 하나 뿐이며 모든 반복을 렌더링하는 데 사용됩니다. –
DRCB
@DRCB 감사합니다. – edze