Xpages - 如果验证失败,则使用保存在文档中的值覆盖空白字段

时间:2015-07-03 03:09:15

标签: xpages lotus-notes lotus-domino

我正在制作一个需要进行服务器端验证的Xpages应用程序。

在我的表单中,当一个字段被清除并且表单已提交时 - 如果有另一个字段导致验证失败 - 它将重新填充文档中最后一个成功保存的值。

这不是应该发生的事情。该字段应保持空白,直到刷新页面或用户输入另一个值。

有没有人知道造成这种情况的原因是什么?

谢谢, 保罗

2 个答案:

答案 0 :(得分:2)

这取决于你的execId和refreshId。

对于部分刷新期间发生的情况,请阅读这些博文,特别是第三部分http://www.intec.co.uk/tag/partial-refresh/

如果验证(或转换)在服务器端失败,则不会更新XPage的服务器端映射,因为数据不足以进行服务器端处理。

因此,部分刷新会跳转到“渲染响应”,后者会回显应该向页面显示的HTML。这包括字段中的值 - 您正在替换HTML,因此必须这样做。

如果你是保存按钮正在刷新表单区域,那么你将在那里替换HTML,所以用最后的有效值覆盖用户输入的值。

推荐的方法取决于您的页面架构以及您要保存的内容。一种是将验证移到save()函数,此时值将在DominoDocument(服务器上的Document的前端包装器)中更新。另一种方法是仅刷新验证区域,如果验证成功,请致电context.reloadPage()context.redirectToPage()以有效跳过部分刷新。

答案 1 :(得分:0)

感谢您的帮助。据我所知,这只是由于xpages中包含的默认转换器处理对象和/或字符串的方式。编写一个java自定义转换器将所有内容排序。