在我的支持bean中,我有一个绑定到数据表的列表。我需要在外部JavaScript中获取此列表数据(称为路由 )。
支持Bean
@Component("routeBean")
@Scope("session")
public class RouteBean {
List<RouteModel> routes;
private RouteModel routeModel;
public List<RouteModel> getRoutes() {
return routes;
}
public void setRoutes(List<RouteModel> routes) {
this.routes = routes;
}
public void addToList(){
routes.add(getRouteModel());
setRouteModel(new RouteModel());
}
public RouteModel getRouteModel() {
return routeModel;
}
public void setRouteModel(RouteModel routeModel) {
this.routeModel = routeModel;
}
.......................
}
JSF
<p:fieldset legend="routeFieldset">
<p:inputText id="txtKm" value="#{routeBean.routeModel.km}"/><br/>
<p:commandButton value="Route Toevoegen" id="btnSaveRoute"
action="#{routeBean.addToList}"
update="routeListPanelGroup"
oncomplete="showBeanData()"/> <!-- this will execute the javascript method and show the data -->
</p:fieldset>
<p:fieldset legend="Routelijst">
<h:panelGroup id="routeListPanelGroup">
<p:dataTable value="#{routeBean.routes}"
var="route" id="routeListDTable"
widgetVar="routeWidget">
<p:column headerText="Id">
<h:outputText value="#{route.id}"/>
</p:column>
<p:column headerText="Km">
<h:outputText value="#{route.km}"/>
</p:column>
</p:dataTable>
</h:panelGroup>
</p:fieldset>
.......................
外部Javascript
function showBeanData(){
alert(backing bean data -> routes); //??????
}
因此,当用户点击“ btnSaveRoute ”时,新对象会添加到“路由”列表中(此工作正常)。在此之后,javascript方法必须在外部javascript中使用“路由”,而不使用隐藏字段?
注意:我正在使用primefaces
答案 0 :(得分:0)
在RequestContext
上阅读PrimeFaces的文档。展示是here。
基本上,您可以使用方法#RequestContext.addCallbackParam()
将数据从支持bean发送到客户端。在客户端,执行handleComplete(xhr, status, args)
oncomplete
并从args
获取数据。