在 MyFaces 和 Mojarra 2.1 中,都存在一个缺陷,即 whenjavax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL
设置为true
时,在模型中标记为必填和预填充的任何字段,在空白和提交时都会重新显示其原始未空白值而不是留空。
场景是:
- 用户加载带有单个必填字段的页面,该字段填充了模型中的现有数据
- 用户清除页面上的字段并提交表单
- 验证按预期失败,并且向用户显示一条错误消息,提示他们必须填写必填字段。
问题是该字段应该显示用户提交的内容(即他们为该字段提交了一个空白值),而是使用模型中的原始值填充。唯一的解决方法是设置javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL
为false
. 设置为false
提供所需的行为,即当重新显示页面并显示必填字段错误消息时,该字段保持空白。
使用 Mojarra (http://java.net/jira/browse/JAVASERVERFACES-2375) 和 MyFaces (https://issues.apache.org/jira/browse/MYFACES-3525) 记录了一个缺陷,但没有取得任何进展在 6 周内。
请注意,Mojarra 似乎在 6 个月前报告了类似的问题,但尚未取得任何进展。
有谁知道一个解决方法,我们可以保持javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL
设置为 true 而不是 false,但不会遇到这个必填字段可用性问题?