如何通过JavaScript调用带参数的托管bean方法
我正在开发一个web应用程序,我使用JSF和PrimeFaces框架以及外部地理地图API如何通过JavaScript调用带参数的托管bean方法,javascript,jsf,primefaces,httprequest,Javascript,Jsf,Primefaces,Httprequest,我正在开发一个web应用程序,我使用JSF和PrimeFaces框架以及外部地理地图API RequestContext.getCurrentInstance().execute("your javascript code"); 当我点击地图上的一个POI时,MapAPI给了我POI\u id。但这对我来说还不够,我想从servlet获取关于POI的信息,并将其显示在弹出窗口中。(地址、姓名、电话号码等字段) RequestContext.getCurrentInstance().execut
RequestContext.getCurrentInstance().execute("your javascript code");
当我点击地图上的一个POI时,MapAPI给了我POI\u id
。但这对我来说还不够,我想从servlet获取关于POI的信息,并将其显示在弹出窗口中。(地址、姓名、电话号码等字段)
RequestContext.getCurrentInstance().execute("your javascript code");
因此,我需要在单击映射上的POI时向托管bean中的servlet发送HTTP请求
RequestContext.getCurrentInstance().execute("your javascript code");
我可以获取poi_id
,但我无法将此id发送到后端托管bean,因此获取poi信息似乎是不可能的
RequestContext.getCurrentInstance().execute("your javascript code");
如何将poi\u id
发送到我的托管bean并处理在弹出窗口中显示的响应?您可以使用(
)
RequestContext.getCurrentInstance().execute("your javascript code");
RemoteCommand允许执行支持bean方法并执行部分操作
由自定义客户端脚本触发的更新
RequestContext.getCurrentInstance().execute("your javascript code");
按以下方式将其添加到视图中:
<p:remoteCommand name="myRemote" actionListener="#{myBean.listen}"/>
RequestContext.getCurrentInstance().execute("your javascript code");
为了补充Kishor(中途)的答案,您需要在视图(您称之为弹出窗口)中有一个待更新组件,并在请求成功完成后进行ajax更新
RequestContext.getCurrentInstance().execute("your javascript code");
您可以使用remote命令发送带有附加参数的AJAX请求,AJAX将负责作为弹出窗口的JSF组件更新。与此类似(对于PrimeFaces 3.x):
RequestContext.getCurrentInstance().execute("your javascript code");
使用远程命令的替代方法是使用一个带有隐藏输入的隐藏表单,该表单将用于将参数传输到支持bean,该参数可以与其他bean分离,以根据您的poi_id
处理必要信息的检索:
RequestContext.getCurrentInstance().execute("your javascript code");
<h:form id="poi-form" styleClass="invisible">
<h:inputHidden id="poi" value="#{poiBean.poi}" />
<p:commandButton id="info" action="#{poiBean.info}"
update="dialog" oncomplete="dlg.show()" />
</h:form>
<div onclick="document.getElementById('poi-form:poi').value = poi_id;
document.getElementById('poi-form:info').click();">...</div>
...
<p:dialog id="dialog" widgetVar="dlg">
<h:outputText value="#{poiBean.address}" />
...(display other information)
</p:dialog>
我为您的好答案添加了一个用例,并修复了一些拼写错误。如果您愿意,可以随时恢复到原始版本+1.listen()能否返回一个值?如果是这样,如何在客户端javascript中使用它?或者它必须被注入到HTML元素中?