以下是我的表现方式。必须有更好的方法..我希望。
我正在使用jsf数据表来显示我的数据。每行的第一列是一个复选框。
可以选择多个复选框。当我按下提交按钮时,我正在使用javascript / jquery获取所有选中的复选框,并获取该行ID作为字符串。
在我的js中,我将所有ID连接成一个字符串,用逗号分隔它们。然后我将jsf / jsp页面上隐藏输入的值设置为连接字符串。在支持bean中,我从字符串中提取所有这些ID,并创建一个字符串列表。
我希望能够在我的javascript中创建列表,以某种方式将字符串列表传递给支持bean,可能仍然隐藏输入,并避免字符串连接。
如果重要的话,我正在使用jsf1.2。
感谢您的建议。代码示例表示赞赏,但不是必需的。
答案 0 :(得分: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。
无关,这有点骇人听闻。只需将<h:selectBooleanCheckbox>
与Map<Long, Boolean>
或其他内容一起使用即可。这样你就不需要抛出任何JS代码了。另请参阅How to select multiple rows of <h:dataTable> with <h:selectBooleanCheckbox>。