【问题标题】:Expression language to set/get the value for a p:selectBooleanCheckbox用于设置/获取 p:selectBooleanCheckbox 值的表达式语言
【发布时间】:2012-07-03 20:21:37
【问题描述】:

我有一个名为时间表的二维数组,它存储一周中的日期和小时数。如何为 p:selectBooleanCheckbox 值属性提供表达式以设置/获取时间表值。

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns:p="http://primefaces.prime.com.tr/ui">  

    <h:panelGrid columns="24">  
        <c:forEach begin="0" end="6" varStatus="day">
            <c:forEach begin="0" end="23" varStatus="hour">  
                <p:selectBooleanCheckbox value="...">  
                    <p:ajax listener="#{windowsLogonHours.selectHour(day.count - 1, hour.count - 1)}" />
                </p:selectBooleanCheckbox>
            </c:forEach>  
        </c:forEach>        
    </h:panelGrid>  
</ui:composition>

【问题讨论】:

    标签: java jsp jsf jstl


    【解决方案1】:

    假设timetableboolean[][],则可以使用varStatus中的LoopTagStatus#getIndex()获取迭代索引,作为二维数组的索引。

    <p:selectBooleanCheckbox value="#{bean.timetable[day.index][hour.index]}">
    

    请注意,您必须在支持 bean 的初始化或(后)构造期间自己准备数组。 JSF/EL 不会为您准备数组,而只会通过索引获取/设置其值。

    【讨论】:

    • 值的表达语言是正确的。只有一个小的修正。数组必须是 Boolean[][]。在primefaces.org/docs/vdl/3.2/p/selectBooleanCheckbox.html 它说值必须评估为 java.lang.Object。
    • 我得到了这个 boolean[][] 异常:java.lang.ClassCastException: Unable to add an object of type [java.lang.Boolean] to an object of type of [boolean]
    • 这可能是特定于 EL 实现的。你用的是Tomcat吗?单个 boolean 属性是否适用于单个 &lt;p:selectBooleanCheckbox&gt;
    • 是的,我使用的是 Tomcat 7。boolean 属性配合使用效果很好。目前我正在使用 org.jboss.el.E​​xpressionFactoryImpl
    • 众所周知,Tomcat 7 在 EL 中有特殊的类型检查问题(顺便说一句,我不知道这个特殊的问题)。那就留着Boolean[][]吧。您可能想发布问题报告。
    猜你喜欢
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多