我正在制作一个需要进行服务器端验证的Xpages应用程序。
在我的表单中,当一个字段被清除并且表单已提交时 - 如果有另一个字段导致验证失败 - 它将重新填充文档中最后一个成功保存的值。
这不是应该发生的事情。该字段应保持空白,直到刷新页面或用户输入另一个值。
有没有人知道造成这种情况的原因是什么?
谢谢, 保罗
答案 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自定义转换器将所有内容排序。