如何使用f:setPropertyActionListener
或任何其他方法将JavaScript中的数组(基本上是用户选择的某些表行)传递给支持bean数组?
答案 0 :(得分: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调用隐藏的按钮。它甚至不需要监听器或操作,但生成的回发将导致字符串更新为托管属性。
答案 1 :(得分:1)
使用f:setPropertyActionListener不是解决此问题的正确方法。我建议你创建h:inputHidden字段,将它绑定到bean属性并使用javascript更新它的值(在那里设置数组信息)。提交表单后,您的bean将在使用javascript之前收到您设置的值。