JSF 验证因无(明显)原因而失败
JSF Validation fails for no (obvious) reason
我的 JSF 2.2 页面中有几个必需的 PrimeFaces 5.2 <p:autoComplete>
组件绑定到 @ViewScoped
bean。该页面包含以下必需元素:
- 员工(p:autoComplete)
- 订单(p:自动完成)
- 位置(p:自动完成)
- 工作时间(p:inputText)
- 描述(p:inputTextArea)
- DaysOfBookkeeping(多日期选择器的自定义组件)。
当我完成表格并立即提交记录时,一切正常。当我在点击提交按钮之前将表单单独放置几分钟时,我收到 "Order" 和 "Location" 的验证错误,即使表单中的值仍然存在并且 HTTP-POST与成功提交时完全一样。在 HTTP-Post 中,我可以看到 "Order" 和 "Location" 的值已设置,就像在成功的 HTTP-POST 中一样。我从来没有收到 "Employee" 的任何验证错误,即使三个 p:autoComplete
元素之间没有区别。
javax.faces.partial.ajax=true&javax.faces.source=NewTimesheetForm%3AsH_submit&javax.faces.partial.execute
=%40all&javax.faces.partial.render=NewTimesheetForm%3Agrowl&NewTimesheetForm%3AsH_submit=NewTimesheetForm
%3AsH_submit&NewTimesheetForm=NewTimesheetForm&NewTimesheetForm%3AMain_employeeAutoComplete_input=Sebastian
+Lang&NewTimesheetForm%3AMain_employeeAutoComplete_hinput=df27af76-9937-4e28-bee8-66a000f0ce9c&NewTimesheetForm
%3AMain_dateArray_input=&NewTimesheetForm%3AMain_dateArray_datepicker=&NewTimesheetForm%3AMain_wspOrderAutoComplete_input
=Development+(Kolibri)& NewTimesheetForm%3AMain_wspOrderAutoComplete_hinput=21c2259e-08bf-4a98-b718-8be67dba3b55&NewTimesheetForm%3AMain_locationAutoComplete_input=Wien&NewTimesheetForm%3AMain_locationAutoComplete_hinput
=15e41fee-ef98-4176-a118-032cef4e4c02&NewTimesheetForm%3AMain_workingTime=12&NewTimesheetForm%3AMain_description
=123&javax.faces.ViewState=15843050982783687%3A7588832336313498775
任何想法可能是验证错误的原因?
- PrimeFaces 5.2
- Mojarra 2.2.10
- 野飞 9.0.1
我用错了converter
。这是正确的做法:http://showcase.omnifaces.org/converters/ListConverter
我的 JSF 2.2 页面中有几个必需的 PrimeFaces 5.2 <p:autoComplete>
组件绑定到 @ViewScoped
bean。该页面包含以下必需元素:
- 员工(p:autoComplete)
- 订单(p:自动完成)
- 位置(p:自动完成)
- 工作时间(p:inputText)
- 描述(p:inputTextArea)
- DaysOfBookkeeping(多日期选择器的自定义组件)。
当我完成表格并立即提交记录时,一切正常。当我在点击提交按钮之前将表单单独放置几分钟时,我收到 "Order" 和 "Location" 的验证错误,即使表单中的值仍然存在并且 HTTP-POST与成功提交时完全一样。在 HTTP-Post 中,我可以看到 "Order" 和 "Location" 的值已设置,就像在成功的 HTTP-POST 中一样。我从来没有收到 "Employee" 的任何验证错误,即使三个 p:autoComplete
元素之间没有区别。
javax.faces.partial.ajax=true&javax.faces.source=NewTimesheetForm%3AsH_submit&javax.faces.partial.execute
=%40all&javax.faces.partial.render=NewTimesheetForm%3Agrowl&NewTimesheetForm%3AsH_submit=NewTimesheetForm
%3AsH_submit&NewTimesheetForm=NewTimesheetForm&NewTimesheetForm%3AMain_employeeAutoComplete_input=Sebastian
+Lang&NewTimesheetForm%3AMain_employeeAutoComplete_hinput=df27af76-9937-4e28-bee8-66a000f0ce9c&NewTimesheetForm
%3AMain_dateArray_input=&NewTimesheetForm%3AMain_dateArray_datepicker=&NewTimesheetForm%3AMain_wspOrderAutoComplete_input
=Development+(Kolibri)& NewTimesheetForm%3AMain_wspOrderAutoComplete_hinput=21c2259e-08bf-4a98-b718-8be67dba3b55&NewTimesheetForm%3AMain_locationAutoComplete_input=Wien&NewTimesheetForm%3AMain_locationAutoComplete_hinput
=15e41fee-ef98-4176-a118-032cef4e4c02&NewTimesheetForm%3AMain_workingTime=12&NewTimesheetForm%3AMain_description
=123&javax.faces.ViewState=15843050982783687%3A7588832336313498775
任何想法可能是验证错误的原因?
- PrimeFaces 5.2
- Mojarra 2.2.10
- 野飞 9.0.1
我用错了converter
。这是正确的做法:http://showcase.omnifaces.org/converters/ListConverter