将 h:selectBooleanCheckbox 的值属性呈现为 HTML 的先决条件是什么

What is pre-requisite for value attribute of h:selectBooleanCheckbox to be rendered to HTML

我有一个包含 ID 列表的托管 bean。当我使用数据 table 遍历该列表时,我使用 h:selectBooleanCheckbox 并将 id 值分配给它,如下所示:

<h:selectBooleanCheckbox value = "#{managedBean.objectMap[<objectKey>]}">

但是,在呈现页面后,我没有看到正在呈现的 value 属性。所以我想知道为什么它没有被渲染?

However, after the page is rendered, I don't see the value attribute being rendered. So I wanted to know why it is not being rendered?

因为它与触发 Boolean 无关。仅请求参数是 null 或非 null 取决于 HTML checked 状态就足以表示 Boolean<h:selectBooleanCheckbox> 无论如何都不支持非 Boolean 值。

如果您绝对确定需要一个复选框值,请仅对一个项目使用 <h:selectManyCheckbox>

<h:selectManyCheckbox value="#{bean.selectedValues}">
    <f:selectItem itemValue="#{bean.someValue}" itemLabel="#{null}" />
</h:selectManyCheckbox>

或者,如果它实际上是为了 JavaScript 目的(我只是猜测,因为你在 JSF 问题上混淆地标记了 而没有在任何地方解释其相关性),那么你也可以使用 HTML5 data 可以设置为直通属性的属性(需要 JSF 2.2)。

<html ... xmlns:a="http://xmlns.jcp.org/jsf/passthrough">
...
<h:selectBooleanCheckbox value="#{bean.someBoolean}" a:data-value="#{bean.someValue}" />

它将在 JS 中可用,如下所示:

var value = element.dataset.value;

或jQuery:

var value = $(element).data("value");

另请参阅:

  • How to use <h:selectBooleanCheckbox> in <h:dataTable> to select multiple rows?