如果放在<ui; repeat> </ui; repeat> </h:selectbooleancheckbox>中,<h:selectbooleancheckbox>不起作用

时间:2012-05-08 06:24:14

标签: jsf java-ee primefaces mojarra

jsf有几个限制(缺陷?)导致了这个问题。

    <ui:repeat value="#{myBean.myAttrs}" var="attr">
          <h:outputText value="#{myBean.selectedObj.values[attr.name]}" 
            rendered="#{attr.dataType=='Text'}"/>
          <h:selectBooleanCheckbox value="#{myBean.selectedObj.values[attr.name]}"
            rendered="#{attr.dataType=='Boolean'}"/>
           .... render other data type like list, date etc.
    </ui:repeat>

jsf中的第一个“渲染”属性限制,即使渲染为false,组件仍然处理。这会导致ui:repeat中的每个attr类型尝试评估每个输出组件的值。即selectBooleanCheckbox的值将尝试评估日期类型。如果render为false,则最终不会呈现该组件。如果没有selectBooleanCheckbox(第二期),即使出现此问题,一切都很好。 第二个问题,selectBooleanCheckbox将始终假设输入值是布尔类型。因此,对于日期类型,评估值(由于第1期)将失败。

这个代码狙击手是否通常用于在JSF中动态显示不同的数据类型?我尝试为selectBooleanCheckbox配置自定义渲染器,转换器。但它仍然失败,数据类型转换异常。任何的想法?如何将selectBooleanCheckBox的默认“expectedType”从“Boolean”更改为“Object”,就像其他JSF输入组件一样。

- 更新:问题仅适用于mojarra而非myfaces。

0 个答案:

没有答案