我想基于我选择或不选中的复选框在表单中呈现单个组件(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>
但是,在选择或取消选中复选框时不会重新呈现该组件。然而,我可以重新渲染整个表格,但我不希望这样。
答案 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名称复选框标记的渲染属性
。