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

Xpages - blank fields overwritten with value saved in document if validation fails

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

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

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

有没有人知道是什么导致了这种情况?

谢谢, 保罗

这取决于您的 execId 和 refreshId。

要了解部分刷新期间发生的情况,请阅读这些博文,尤其是第三部分 http://www.intec.co.uk/tag/partial-refresh/

如果服务器端验证(或转换)失败,则不会更新 XPage 的服务器端映射,因为数据被认为不够完整,无法进行服务器端处理。

所以部分刷新会跳到渲染响应,它会回传 HTML 应该显示在页面上的内容。这包括字段中的值 - 您要替换 HTML,所以它必须替换。

如果您的保存按钮正在刷新表单区域,您将在那里替换 HTML,因此用最后一个有效值覆盖用户输入的值。

推荐的方法取决于您的页面架构和您保存的内容。一种是将验证移至 save() 函数,届时 DominoDocument(服务器上 Document 的前端包装器)中的值将被更新。另一种是只刷新验证区域,如果验证成功,调用context.reloadPage()context.redirectToPage()有效地跳过部分刷新。

感谢您的帮助。据我所知,这仅仅是由于 xpages 中包含的默认转换器处理对象 and/or 字符串的方式。编写 java 自定义转换器可以解决所有问题。