我发现这个discussion描述了如何将输入文本放在重复控件中并重复它无限次,并将其动态绑定到文档中的字段。
这就是我的所作所为。我创建了一个像这样的重复:
<xp:repeat indexVar="fieldSuffix" value="#{viewScope.rowCount}">
<xp:div>
<xc:dynamicInputText dataSource="#{contact}" fieldName="fullName_#{fieldSuffix}" />
</xp:div>
</xp:repeat>
在自定义控件dynamicInputText
中,我编写了输入文本控件,如下所示:
<inputText value="#{compositeData.dataSource[compositeData.fieldName]}" />
然后我创建了一个Add按钮,我将viewScope.rowCount
递增1并部分刷新重复控件。这会添加一行输入文本。类似地,我在点击时创建了一个删除按钮,将viewScope.rowCount
递减1并部分刷新重复控件。这将删除最后添加的输入文本。
现在,如果点击Add三次,我会在网页上获得三个输入文本字段。我在每个人中输入信息。然后我单击“删除”以删除第三个(最后一个)输入文本。现在,当我保存数据源时,所有三个字段(包括我删除的最后一个字段)都会保存在文档中。
为什么会这样?如何停止我删除的第三个字段以保存在文档中?
答案 0 :(得分:1)
你只是隐藏了那个领域的渲染。绑定后,“删除”按钮必须清除其值或从DDS中删除该项目。例如DDS.replaceItemValue( field, "" )
或(最好)DDS.removeItem( field )
。