ClassCastException: uirepeat 索引在设置布尔数组值 jsf

布伦丹

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

在 javax.el.ArrayELResolver.setValue(ArrayELResolver.java:260) 处的 java.lang.ClassCastException

在托管 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>
英戈K。

你的问题有一些不同的问题。

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

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

永远不会工作。您尝试在运行时分配内存。

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

 List<boolean> enrollList = new ArrayList<>;

..并用他的功能添加vaules。

enrollList.add(new boolean(true));

这可能不会避免 classCast 情况。

其次:我猜你的班级演员在这里抛出:

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

你尝试调用adminController.(get/set)enrollarr[myvar.index] ... 但是这个函数不存在。

“翻译”前端尝试调用adminController.setEnrollarr(true),正如我们所见:没有像.setEnrollarr(boolean)这样的函数,只有.setEnrollarr(boolean[])]

第三:但总的来说,我认为您的构建有点混乱。将您注册- boolean 转移到 Student 类会容易得多然后你可以像其他变量一样调用它:

 <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>

在这里添加到您的学生班级。请注意:布尔 getter 以“is”开头。

 public class Student{

    public boolean enroll;

    public boolean isEnroll() {
        return enroll;
    }

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

 }

希望我的回答可以带来一些澄清并帮助您走得更远!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章