如何将当前选定的行传递给<p:ajax oncomplete>
中的JavaScript函数?
<p:dataTable value="#{bolt.sites}" var="bolt" selection="#{bolt.selectedSite}" ...>
<p:ajax event="rowSelect" oncomplete="alert(#{bolt.selectedSite.name});" />
我尝试了所有:#{bolt.selectedSite.name}
,#{bolt.name}
。
答案 0 :(得分:3)
调用操作后,不会评估oncomplete
属性中的EL表达式。在渲染包含该ajax调用逻辑的JavaScript代码时,已经对它们进行了评估。
最好的办法是添加一个侦听器方法,该方法通过RequestContext#addCallbackParam()
将名称添加为回调参数,然后将其作为args
上下文中隐式oncomplete
对象的属性。
<p:ajax ... listener="#{bean.select}" oncomplete="alert(args.name)" />
public void select() {
String name = selectedSite.getName();
RequestContext.getCurrentInstance().addCallbackParam("name", name);
}
对具体问题 无关,您在初始JavaScript尝试中遇到语法错误。属性名称“name”表示它是一个字符串。在JavaScript中,应引用所有字符串值。所以你的虚构解决方案是oncomplete="alert('#{bolt.selectedSite.name}');"