Validation jsf页面抛出j_idt9:stud:验证错误:值无效
这是我的JSF页面中的列表框:Validation jsf页面抛出j_idt9:stud:验证错误:值无效,validation,jsf,Validation,Jsf,这是我的JSF页面中的列表框: <h:selectOneListbox id="stud" value="#{inschrijven.student.studentnr}"> <f:selectItems value="#{inschrijven.gezochteStudenten}" var="st" itemLabel="#{st.studentnr}" itemValue="#{st.studentnr}"/></h:selec
<h:selectOneListbox id="stud" value="#{inschrijven.student.studentnr}">
<f:selectItems value="#{inschrijven.gezochteStudenten}" var="st" itemLabel="#{st.studentnr}" itemValue="#{st.studentnr}"/></h:selectOneListbox>
所以首先我搜索students=>gezochteStudenten
这工作,我调试,它的工作方式应该是
但当我单击按钮schrijfin时,它会给出一个异常,甚至不会转到我的方法:
j_idt9:螺柱:验证错误:值无效
你知道这是怎么可能的吗?我怎样才能解决这个问题
属性studentnr位于类型字符串的两侧,因此这不会是问题…在表单提交请求的验证阶段,JSF基本上会重新迭代选择项的值,并使用Objectequals方法将提交的值与之进行比较。如果提交的值与任何select项值都不匹配,则会出现此验证错误 在您的特定情况下,此验证错误表明{inschrijven.gezochteStudenten}在处理表单提交请求期间没有返回与显示表单期间完全相同的列表。这反过来表明{inschrijven}管理的bean是请求作用域,并且在bean的后期构造期间,而不是在前一个操作的某个事件方法期间填充属性gezochteStudenten。当响应完成时,请求范围的bean会被丢弃,而在表单提交请求期间会构造一个全新的bean 有几种方法可以解决这个问题,这取决于您使用的JSF规范版本和可用的组件库。您没有提到/标记问题中使用的JSF规范版本,但是您的声明提示您正在使用JSF 2.x。var属性是在JSF 2.0中引入的,因此您可以利用新的JSF 2.0视图范围。如果将{inschrijven}托管bean放在视图范围内,那么这个问题应该得到解决。然后,在处理表单提交期间将使用与显示表单期间相同的bean
@ManagedBean
@ViewScoped
public class Inschrijven {
// ...
}
student = new Student();
@ManagedBean
@ViewScoped
public class Inschrijven {
// ...
}