使用<f:setpropertyactionlistener>将JS数组值传递给支持bean </f:setpropertyactionlistener>

时间:2012-07-20 09:07:44

标签: java javascript jsp jsf jstl

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

2 个答案:

答案 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之前收到您设置的值。