栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在JSF中使用jsf.ajax.request手动发送ajax请求

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在JSF中使用jsf.ajax.request手动发送ajax请求

根据JSF
2.3,您可以使用

<h:commandscript>
它。另请参阅规格问题613。

<h:form>    <h:commandscript name="foo" action="#{bean.action}" render="div-to-render" /></h:form>function clickAndRender() {    foo();}

自Mojarra
2.3.0-m06
起可用。


在问题发布后的三年以上,此答案已更新。以下是原始答案,该日期可以追溯到

<h:commandscript>
不存在时。


我不知道’source’参数的值(上面的代码使用’this’)应该是什么

它应该是

UICommand
您要调用的组件的客户端ID
,例如
<h:commandlink>
<h:commandButton>
标准JSF
API提供的,等。这样,JSF将在“应用请求值”阶段期间能够在组件树中定位所需的组件,然后将在其上注册的所有动作(侦听器)排队。


我也不知道应该将最后一个参数中的执行设置为什么。

它应该是您要在表单提交期间处理的组件的以空格分隔的客户端ID。与您通常在中使用的完全相同

<f:ajax execute>


我也不知道如何定义要调用的网址

只是当前页面(从嵌套组件

<form>
<h:form>
位置所生成的页面)派生而来
UICommand
。但是您无需在中指定它
jsf.ajax.request()
。该
jsf.js
会已确定其基础上的客户端ID
UICommand
组件。


以及“行动”方法。

只需以通常的方式指定目标组件的

action
or
actionListener
属性即可
UICommand


总而言之,您的具体问题很可能是

UICommand
视图中没有任何组件,因此您不能使用
jsf.ajax.request()
。一种方法是让表单包含一个被CSS隐藏的命令组件
display:none

<h:form id="foo" >    <h:commandlink id="bar" action="#{bean.method}" /></h:form>

然后,您可以将其

foo:bar
用作
source
参数。

jsf.ajax.request('foo:bar', null, {'javax.faces.behavior.event': 'action', 'execute': '@form', 'render': 'div-to-render'});

上面

<f:ajax execute="@form" render="div-to-render">
的命令实际上与命令组件中的命令相同。您也可以选择使用此路径,然后使用
document.getElementById("foo:bar").click()
代替
jsf.ajax.request()

另外,您也可以创建一个自定义

UICommand
组件,这对于Javascript用户而言将使其变得更加容易。JSF实用程序OmniFaces库具有这样的组件,即
<o:commandscript>
。另请参见其展示页面和源代码。JSF组件库PrimeFaces也具有类似的组件
<p:remoteCommand>
。另请参见其展示页面。RichFaces具有的
<a4j:jsFunction>
功能相同。另请参见其展示页面。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/436923.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号