f:ajax渲染表单组件

时间:2013-09-19 06:16:34

标签: ajax jsf-2

我想基于我选择或不选中的复选框在表单中呈现单个组件(h:selectManyCheckbox)

<h:form> 
    <h:selectBooleanCheckbox value="#{bean.var}">
        <f:ajax event="click" render="employeeCheckboxes" />
    </h:selectBooleanCheckbox>

    <h:selectManyCheckbox 
        id="employeeCheckboxes"
        value="#{bean.checkboxes}"
        rendered="#{var}">
    </h:selectManyCheckbox>
</h:form>

但是,在选择或取消选中复选框时不会重新呈现该组件。然而,我可以重新渲染整个表格,但我不希望这样。

2 个答案:

答案 0 :(得分:1)

您无法引用<f:ajax render>中首先从未在HTML输出中呈现的组件。 <f:ajax render>使用JavaScript document.getElementById()来查找HTML元素,以便使用ajax响应中的新HTML结构更新它。但是,如果JSF组件首先从未在HTML输出中呈现,那么JavaScript也无法在任何地方找到它。

您需要将其包装在另一个始终呈现的组件中。

<h:form> 
    <h:selectBooleanCheckbox value="#{bean.var}">
        <f:ajax render="employeeCheckboxesGroup" />
    </h:selectBooleanCheckbox>

    <h:panelGroup id="employeeCheckboxesGroup">
        <h:selectManyCheckbox 
            id="employeeCheckboxes"
            value="#{bean.checkboxes}"
            rendered="#{bean.var}">
        </h:selectManyCheckbox>
    </h:panelGroup>
</h:form>

(请注意,我删除了event="click",因为它已经是默认值)

另见:

答案 1 :(得分:-1)

您好我认为您错过了

中的托管bean名称
  

渲染属性

复选框标记的

相关问题