0
ui:repeat内にあるInputTextの「required」プロパティを変更したいのですが、コンポーネントからのアクセスができません。 ManagedBean:ui:repeat内のInputのプロパティを変更します。repeat
<h:selectManyCheckbox id="required" value="#{test.required}"
layout="lineDirection" converter="javax.faces.Integer">
<f:ajax event="change" listener="#{test.update}" />
<f:selectItems value="#{test.selectable}"></f:selectItems>
</h:selectManyCheckbox>
<ui:repeat value="#{test.names}" var="name" id="repeat">
<h:panelGrid columns="3">
<h:outputLabel id="nameLabel">name:</h:outputLabel>
<h:inputText id="name" value="#{name}"
validator="#{test.validateName}" />
<h:message for="name"></h:message>
</h:panelGrid>
</ui:repeat>
私はFindComponent指定メソッドを使用しようとしているが、それは動作しません:
public void update(AjaxBehaviorEvent event) {
for(Integer i: selectable) {
UIViewRoot vr = FacesContext.getCurrentInstance().getViewRoot();
HtmlInputText input = (HtmlInputText)vr.findComponent("form:repeat:"+i+":name");
input.setRequired(required.contains(i));
}
}
機能要件は、チェックボックスをクリックして項目を選択するときに、対応するinputTextが必要であることです。 – user532357
ローカライズ可能なデータを考えると、チェックボックスはロケールであり、inputTextsは各ロケールのローカライズされたデータです。選択したロケールのinputTextsのみが必要です。たとえば、ある書籍の翻訳されたタイトルを追加したいだけで、その言語を追加するだけで翻訳されているとします。 – user532357
要件は健全です。 'h:selectManyCheckbox'を' h:panelGrid'の第1列の 'h:selectBooleanCheckbox'で置き換えていますか?チェックボックスと入力テキストの両方を同じ繰り返しで行う方が簡単です。 – BalusC