Arrays ClassCastException:uirepeat设置布尔数组值jsf中的索引

Arrays ClassCastException:uirepeat设置布尔数组值jsf中的索引,arrays,jsf,boolean,classcastexception,uirepeat,Arrays,Jsf,Boolean,Classcastexception,Uirepeat,数组大小取决于runtinme上的学生大小。我能够在JSF中基于布尔数组的selectBooleanCheckbox上有效地显示布尔值。但是,在设置该值时,会发生ClassCastException java.lang.ClassCastException 位于javax.el.ArrayELResolver.setValue(ArrayELResolver.java:260) 在托管Bean中: enrollarr = new boolean[this.student.size()]; p

数组大小取决于runtinme上的学生大小。我能够在JSF中基于布尔数组的selectBooleanCheckbox上有效地显示布尔值。但是,在设置该值时,会发生ClassCastException

java.lang.ClassCastException 位于javax.el.ArrayELResolver.setValue(ArrayELResolver.java:260)

在托管Bean中:

enrollarr = new boolean[this.student.size()];

 public boolean[] getEnrollarr() {
    return enrollarr;
}

public void setEnrollarr(boolean[] enrollarr) {
    this.enrollarr = enrollarr;
}
在JSF中:

    <ui:repeat var="value" value="#{adminController.student}" varStatus="myvar" >
                <tr>
                    <td>#{value.name}</td>  
                    <td>#{value.TP}</td> 
                    <td>#{value.gender}</td> 
                    <td><h:selectBooleanCheckbox value="#{adminController.enrollarr[myvar.index]}" /></td>
                </tr>
    </ui:repeat>

#{value.name}
#{value.TP}
#{value.gender}

您的问题中有一些不同的问题

首先:不能在运行时设置数组的大小。数组必须在运行前分配内存。这意味着您的:

 enrollarr = new boolean[this.student.size()];
这是行不通的。您尝试在运行时分配内存

对于这种情况,我建议使用ArrayList,并用类似的布尔值填充它

 List<boolean> enrollList = new ArrayList<>;
这可能无法避免classCast案例

所以第二点:我猜你的职业演员名单是在这里投出的:

<td><h:selectBooleanCheckbox value="#{adminController.enrollarr[myvar.index]}" /></td>

希望我的answear能带给你一些清晰的信息,帮助你走得更远

谢谢。我正在走第三步!
<td><h:selectBooleanCheckbox value="#{adminController.enrollarr[myvar.index]}" /></td>
 <ui:repeat var="value" value="#{adminController.student}" varStatus="myvar" >
            <tr>
                <td>#{value.name}</td>  
                <td>#{value.TP}</td> 
                <td>#{value.gender}</td> 
                <td><h:selectBooleanCheckbox value="#{value.enroll}" /></td>
            </tr>
</ui:repeat>
 public class Student{

    public boolean enroll;

    public boolean isEnroll() {
        return enroll;
    }

    public void setEnroll(boolean enroll) {
        this.enroll = enroll;
    }

 }