Mah*_*hdi 5 java primefaces jsf-2
我需要知道如何
使用push ... 在index2.xhtml中更改数据时如何在index1.xhtml中更新DataTable ...我在index1.xhtml中定义socket,如下所示:
<p:socket channel="/table" onMessage="handle"/>
Run Code Online (Sandbox Code Playgroud)
在豆子里:
public void contract(){
....
PushContext pcont=PushContextFactory.getDefault().getPushContext();
pcont.push("/table",something);
}
Run Code Online (Sandbox Code Playgroud)
我不知道的是我如何在javaScript中更新dataTable:
<script type="text/javascript">
function handle() {
???
}
</script>
Run Code Online (Sandbox Code Playgroud)
这是我的简单测试,当2.xhtml中的soclet从服务器接收到事件时,它将向命令按钮触发单击事件,并且该命令按钮(您可以不可见)将更新您想要的目标:Bean:
@ManagedBean(name = "globalCounter")
@SessionScoped // option
public class GlobalCounterBean implements Serializable {
private static final long serialVersionUID = 1L;
private int count;
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public void increment() {
count++;
PushContext pushContext = PushContextFactory.getDefault().getPushContext();
pushContext.push("/counter", String.valueOf(count));
}
}
Run Code Online (Sandbox Code Playgroud)
1.xhtml:
<h:body>
<h:form id="form">
<h:outputText id="out" value="#{globalCounter.count}" styleClass="ui-widget display" />
</h:form>
<p:socket onMessage="handleMessage" channel="/counter" />
</h:body>
Run Code Online (Sandbox Code Playgroud)
2.xhtml:
<h:form id="form">
<h:outputText id="out" value="#{globalCounter.count}" styleClass="ui-widget display" />
<br />
<p:commandButton onclick="alert('test')" id="btn" process="@form" value="Click" update="@parent" />
</h:form>
<p:socket onMessage="handleMessage" channel="/counter" />
<script type="text/javascript">
function handleMessage(data) {
$('#form\\:btn').click();
}
</script>
Run Code Online (Sandbox Code Playgroud)