Javascript 通过JQuery传递参数更新h:dataTable
如何使用JSF dataTable显示orderList项的行以及调用jQuery函数showOrderNum(orderNum)时的行 是否更新datatable以仅显示具有该orderNum的订单? 问题是让jquery函数调用dataTable的支持bean来传递参数 下面是一个示例,数据表:Javascript 通过JQuery传递参数更新h:dataTable,javascript,jquery,jsf,jsf-2,Javascript,Jquery,Jsf,Jsf 2,如何使用JSF dataTable显示orderList项的行以及调用jQuery函数showOrderNum(orderNum)时的行 是否更新datatable以仅显示具有该orderNum的订单? 问题是让jquery函数调用dataTable的支持bean来传递参数 下面是一个示例,数据表: <h:dataTable value="#{order.orderList}" var="o"> <h:column>
<h:dataTable value="#{order.orderList}" var="o">
<h:column>
<f:facet name="header">
<h:outputText value="Order No."/>
</f:facet>
#{o.orderNo}
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Product Name"/>
</f:facet>
#{o.productName}
</h:column>
</h:dataTable>
这里是jquery函数,它应该让dataTable更新:
function showOrderNum(orderNum) {
//update datatable passing orderNum parameter
}
Richfaces提供了一个4j:jsf函数来执行来自javascript本身的ajax请求。如果你使用Ri饰面,你可以考虑这个问题。
沿着下面的线尝试一些东西:
(xhtml中的更改)commandLink
将使用AJAX调用服务器并填充order。selectedOrder
。它的子级
重新呈现网格,调用getOrderList()
,它现在看到一个过滤器处于活动状态,并相应地执行操作。也应该有一个明确的装修按钮的地方
顺便说一下,不需要使用jQuery。这是JSF版本2 .x,对吗?是的,忘了提它,我更新了问题。我会考虑这个问题,但是我想先了解普通JSF方式。我认为不使用第三方库也可以做类似的事情。你在叫showOrderNum(orderNum)吗?它是否在某个地方被调用了值更改?单击一个按钮,会打开一个模式弹出窗口,我从orderNum下拉列表中选择,在模式对话框关闭时调用showOrderNum(orderNum)。由于上面不够灵活,我确实应该选择dataTable本身的一个字段,而不是showOrderNum(orderNum)可能是别的。我希望Jquery调用Bean的函数和dataTable来刷新这些数据;但是,您可以使用JSF2JavaScript API,如本规范第13章和第14章(特别是第14章)所述。也就是说,如果
还不够。
function showOrderNum(orderNum) {
//update datatable passing orderNum parameter
}
<h:dataTable value="#{order.orderList}" var="o" id="resultsGrid">
<h:column>
<f:facet name="header">
<h:outputText value="Order No."/>
</f:facet>
<h:commandLink value="#{o.orderNo}">
<f:setPropertyActionListener target="#{order.selectedOrder}" value="#{o}" />
<f:ajax render="resultsGrid" />
</h:commandLink>
</h:column>
...
</h:dataTable>
@ManagedBean(name="order")
@SessionScoped
public class OrderBean implements Serializable{
...
private Order selectedOrder;
// getter and setter for selectedOrder
public Order[] getOrderList() {
if( selectedOrder == null ) return orderList;
else return getOrderList(selectedOrder.getOrderNo());
}
...
}