这个问题似乎很简单,但我没有发现错误。
好的,我们开始吧:我有一个带有 IP 列表(无论如何)的表单,
IP n:[INPUT-FIELD] [Button "Add"]
IP n+1 : [INPUT-FIELD] [Button "Add"]
这些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());
}
}
谢谢。
伯恩德