-5

如何使用f:setPropertyActionListener或任何其他方法将 JavaScript 中的数组(基本上是用户选择的一些表行)传递给支持 bean 数组?

4

2 回答 2

3

在没有更具体的情况下,我将假设您正在谈论首先需要将其转换为字符串的命名数组或 JSON 对象。

<script type="text/javascript">
function callBackingBean(myJSON) {
   var stringArray = JSON.stringify(myJSON);
   jQuery('#theClientIdOfTheField')[0].value = stringArray;
   var button = jQuery('#theClientIdofthebutton');
   button.click();
}
</script>

<h:inputHidden id="input1" value="#{managedBean.managedProperty}" />
<h:commandButton id="buttonid" style="display: none;" />

该策略本质上是使用隐藏输入,将 JSON 转换后的字符串作为其值,同时从 Javascript 调用隐藏按钮。它甚至不需要侦听器或操作,但生成的回发将导致字符串更新为托管属性。

于 2012-07-20T11:12:52.927 回答
1

使用 f:setPropertyActionListener 不是解决此问题的正确方法。我建议您创建 h:inputHidden 字段,将其绑定到 bean 属性并使用 javascript 更新它的值(在那里设置数组信息)。提交表单后,您的 bean 将收到您在使用 javascript 之前设置的值。

于 2012-07-20T11:12:02.733 回答