我使用JSON和remotecommand将值传递给managedbean但是当我尝试在JavaScript中查看托管bean的值时,我看到默认值而不是更新的值。
我不想刷新页面或在XHTML中使用隐藏标签,因为我可能需要进行大量的数据交换。
当值改变时:
<script>
var json= [ { name : 'zoom', value : zoomLevel } ];
sendParams(json);
</script>
在我的.js文件中我使用remotecommand:
function sendParams(jsonData) {
passToJSFManagedBean (jsonData);
}
在.xhtml中我调用了managedbean中的函数:
<p:remoteCommand name="passToJSFManagedBean" id="passToJSFManagedBeancmd" action="#{tagBean.setParams}" process="@this" />
托管bean中的:
public void setParams() {
this.zoom= Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("zoom"));
System.out.println("Zoom level: "+zoom);
}
然后我们可以看到传递托管bean的值。但是当我在js中尝试时,缩放值不会更新并具有默认值。
alert('#{tagBean.zoom}');
有没有办法在javascript中获取托管bean的属性而不使用xhtml中的隐藏标签?重要的是页面不需要刷新。是否可以使用remotecommand获取managedbean值?谢谢你的帮助。
答案 0 :(得分:1)
在primefaces中,通过requestContext我可以得到bean的属性。