Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation jsf页面抛出j_idt9:stud:验证错误:值无效_Validation_Jsf - Fatal编程技术网

Validation jsf页面抛出j_idt9:stud:验证错误:值无效

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

这是我的JSF页面中的列表框:

<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 {
    // ...
}