【问题标题】:retrieve selected Row data in JSF在 JSF 中检索选定的行数据
【发布时间】:2012-06-02 12:34:04
【问题描述】:

我有一个 JSF 页面,我在其中创建了一个 html 表并使用 ui:repeat 显示行数据。我有一个保存按钮,当我选择特定行时,我希望保存整个行数据。当我尝试选择特定行时,我无法获取行数据。 ui:repeat 没有绑定属性将其绑定到支持 bean 数据表。

您能否建议如何实现相同的目标。提前致谢

【问题讨论】:

  • 用户如何选择行?通过单击它,或者您正在使用 selectBooleanCheckbox 或其他一些标签?
  • 嗨洛根,感谢您的回复。我使用 selectBooleanCheckbox 标签来选择数据表中的行。我还使用了 html 表来创建数据表,因为根据我的要求,我需要在每一行中都有一个子表。我能够使用 html Table 选项来实现这一点。

标签: jsf jsf-2


【解决方案1】:

确保将复选框连接到 bean 属性:

<h:selectBooleanCheckbox id="selection" value="#{listController.checked[item.id]}" />

在你的 bean 中你需要:

private Map<Integer, Boolean> checked = new HashMap<Integer, Boolean>();

public Map<Integer, Boolean> getChecked() {
    return checked;
}

如果您想知道选择了哪些项目,您可以这样做:

for (Map.Entry<Integer, Boolean> e : checked.entrySet()) {
    if (e.getValue()) {
        // do something with selected row
     }
 }

【讨论】:

    【解决方案2】:

    您可以通过将当前行作为参数传递给您必须使用jsf:ajaxselectBooleanCheckboxonchange 事件调用的操作来实现此目的。

    【讨论】:

    • 非常感谢您的回复。您能否让我知道如何在 ajax 调用中将当前行数据作为参数传递。实际上,我没有将我的数据表与任何支持 bean 数据表绑定,因为我使用的是通用 html 表(这是因为根据我的要求,我需要创建嵌套数据表,并且只能通过创建一个 html 表来实现。你对此的帮助非常感谢。谢谢
    • 表格是如何生成的?您是否对其进行了硬编码,或者正在使用 JSTL 或其他一些标记来迭代要在表中显示的数据?
    • 我实际上是在使用 来遍历数据并将其显示在 Datatable 中
    • 为了将当前行值传递给函数,使用ui:repeat的var属性,并在函数中作为参数传递。
    猜你喜欢
    • 2011-02-16
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 2012-08-09
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多