我有一个奇怪的事情,我在自定义控件中使用动态字段绑定。
字段绑定就是这样创建的。
字段绑定就像这样完成 的#{文件[compositeData.fieldName]}
问题是,当我保存XPage时,我在消息控件中出现错误
文档已被其他用户保存 - 保存创建了一个新文档作为对该修改文档的响应。
所有字段都已清除。
任何想法如何调试这个或是否有我遗漏的东西?
答案 0 :(得分:1)
“文档已被另一个用户保存”错误只是冰山一角 - 有一些非常奇怪的问题,reapeats重复绑定的字段并且repeatControls属性设置为false。 xpages生命周期的解码部分无法正确处理 - 控件将丢失数据。你应该像Martin建议的那样使用repeatControls设置为true。
“重复控制变量不存在”可能是由删除重复设置为true的属性引起的。您可以通过将其更改为false或添加将保持重复值的其他数据上下文来解决此问题。
最后为此添加/删除功能您可以使用动态内容控制并显示(null)黑客来重建重复内容。
为了更好地管理这种复杂性,我建议你停止使用文档数据源并开始创建一些托管bean。
如果您将遵循我的建议,我保证您将获得您正在寻找的功能,因为我的应用程序很少,并且其中包含这种复杂的数据编辑器。
答案 1 :(得分:1)
我不知道它是否对您有所帮助,但我将文档数据源和字段名称作为参数传递给DynamicField控件,并像这样使用它:
compositeData.dataSource[compositeData.fieldName]
数据源的类型是com.ibm.xsp.model.DataSource,它在数据源下列为dataInterface。
答案 2 :(得分:0)
您是否为重复控制设置了repeatControls =“true”?
答案 3 :(得分:0)
听起来你已经在XPage上多次定义了数据源(加上自定义控件)。这个或保存按钮有save =“true”,但代码保存文档后端,或者多个地方的代码保存相同的文档。我使用了将数据源传递给自定义控件的相同方法,但这可能只是因为这是我在博客上看到的。