如何使用f:setPropertyActionListener
或任何其他方法将 JavaScript 中的数组(基本上是用户选择的一些表行)传递给支持 bean 数组?
问问题
2185 次
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 回答