【问题标题】:How/What's the best way to pass a list of Strings from jsf to backing bean如何/将字符串列表从 jsf 传递到支持 bean 的最佳方法是什么
【发布时间】:2011-12-22 02:50:19
【问题描述】:

这就是我的做法。必须有更好的方法.. 我希望。

我正在使用 jsf 数据表来显示我的数据。每行的第一列是一个复选框。

可以选择多个复选框。当提交按钮被点击时,我正在使用 javascript/jquery 获取所有选中的框并获取作为字符串的行 ID。

在我的 js 中,我将所有 ID 连接到一个字符串中,并用逗号分隔它们。然后我将我的 jsf/jsp 页面上隐藏输入的值设置为连接的字符串。在支持 bean 中,我从字符串中提取所有这些 ID 并创建一个字符串列表。

我希望能够在我的 javascript 中创建列表,以某种方式将该字符串列表传递给支持 bean,也许仍然隐藏输入,并避免字符串 concat。

如果这很重要,我正在使用 jsf1.2。

感谢您的建议。代码示例值得赞赏,但不是必需的。

【问题讨论】:

    标签: java jsf


    【解决方案1】:

    你可以让 JS 填写一个<h:inputHidden>

    <h:form id="form">
        <h:inputHidden id="ids" value="#{bean.ids}" />
        // ...
    

    document.getElementById("form:ids").value = yourCommaSeparatedString;
    

    您可以创建一个Converter,它将逗号分隔的String 转换为String[],反之亦然,这样您就可以将ids 设为String[] 属性。您可以在此处找到一个基本示例:taking multiple values from inputText field separated by commas in JSF


    与具体问题无关,这有点骇人听闻。只需将&lt;h:selectBooleanCheckbox&gt;Map&lt;Long, Boolean&gt; 或其他东西一起使用。这样你就不需要抛出任何 JS 代码。另见How to select multiple rows of <h:dataTable> with <h:selectBooleanCheckbox>

    【讨论】:

    • 您的“不相关”评论正是我想要的。我正在寻找一些不那么老套/不需要 JS 的东西。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 2011-10-13
    相关资源
    最近更新 更多