この質問はとても単純に思えますが、私は間違いを見つけられませんでした。
わかりました、どうぞ: IP のリスト (何でも) を含むフォームがあり
ます
。IP n : [INPUT-FIELD] [「追加」ボタン]
IP n+1 : [INPUT-FIELD] [「追加」ボタン]
IP は最初から存在します。これらはマネージド Bean のコンストラクターで初期化されます。
[追加] ボタンをクリックすると、現在の IP が検証されます。その後、java.util.List に別のエントリを追加すると、JSF フォームに別の行が表示されます。
IP n+2 : [入力フィールド] [「追加」ボタン]
等々。
(新しい IP を使用して) 行を追加し、現在の IP を検証すると、既存の値IP nおよびIP n+1に対して完全に機能しますが、動的に追加されたIP n+2では検証および追加は機能しません。動的に生成された入力フィールドの検証も、新しく作成された「追加」ボタンで別の行を追加することもできません。
私は何を間違っていますか?
<h:form id="frmSpecial" prependId="false">
<h:panelGroup id="tblDestFw">
<c:forEach items="#{bean.fwdest}" var="fwdest">
IP: <h:inputText value="#{fwdest.ip}" validator="#{bean.validateIP}"/>
<h:commandButton action="#{bean.addFwDest()}"
value=">>" title="Add another line">
<f:ajax execute="@this" render="tblDestFw"/>
</h:commandButton>
<br/>
</c:forEach>
</h:panelGroup>
</h:form>
@ManagedBean(name = "bean")
@ViewScoped
public class EnterNewSystemFW implements Serializable {
List<FirewallDest> fwdest;
public EnterNewSystemFW() {
fwdest.add(new FirewallDest("N"));
fwdest.add(new FirewallDest("N+1"));
}
public void addFwDest() {
fwdest.add(new FirewallDest());
}
}
ありがとう。
ベルント