使用 <f:setPropertyActionListener /> 将 JS 数组值传递给支持 bean [关闭]
Posted
技术标签:
【中文标题】使用 <f:setPropertyActionListener /> 将 JS 数组值传递给支持 bean [关闭]【英文标题】:Passing JS array value to a backing bean using <f:setPropertyActionListener /> [closed] 【发布时间】:2012-07-19 13:10:36 【问题描述】:如何使用 f:setPropertyActionListener
或任何其他方法将 javascript 中的数组(基本上是用户选择的一些表行)传递给支持 bean 数组?
【问题讨论】:
【参考方案1】:在没有更具体的情况下,我假设您在谈论一个命名数组或一个 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 调用隐藏按钮。它甚至不需要侦听器或操作,但生成的回发将导致字符串更新为托管属性。
【讨论】:
你好枫,因为我有不止一排要通过,你能帮我怎么做吗??? @user1501345 我假设您正在使用 dataTable,并且您正在询问如何将每行的 JSON 对象发送到托管属性告诉我您可能不了解 dataTable 组件很好。大多数第三方 dataTable 控件都具有内置功能,可以非常轻松地将其数据同步到托管属性,因此在不了解您的完整用例的情况下,我不得不假设您完全错误。 你知道你只需要写一次长格式的jQuery
吗?通过将代码包装在(function($) .... )(jQuery);
中,无论noConflict
是否已使用,您都可以使用$
。您可以简单地使用.val(...)
而不是[0].value = ...
@ThiefMaster 是的,我知道这一点,但不幸的是,$ 符号是在 JSF 应用程序中大量使用的 EL 表达式中的保留字符。这就是为什么您会经常看到在 JSF 应用程序中以长格式使用 jQuery。
@user1501345:请停止发布像您刚刚发布的那些不适当的垃圾邮件 cmets。 Ping 并不是为了通知人们您发布的新的不相关问题。【参考方案2】:
使用 f:setPropertyActionListener 不是解决此问题的正确方法。我建议您创建 h:inputHidden 字段,将其绑定到 bean 属性并使用 javascript 更新它的值(在那里设置数组信息)。提交表单后,您的 bean 将收到您在使用 javascript 之前设置的值。
【讨论】:
你能帮帮我吗?我不太了解如何每次为新行更新隐藏文件。如果您提前发布代码或总和 ..thanx,这将非常有帮助 如果您解释确切的用例会更好。所以我们可以知道你在做什么。以上是关于使用 <f:setPropertyActionListener /> 将 JS 数组值传递给支持 bean [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
何时使用 Mono<List<Object>> 以及何时使用 Flux<Object> 用于 RestController 方法
我应该使用 <colgroup> 和 <col>,如果是,为啥以及如何使用?
如何使用 Python 使用 Selenium 获取 <ul> 中的 <li> 元素列表?
<q>、<blockquote> 和 <cite> 的有效使用