Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过JQuery传递参数更新h:dataTable_Javascript_Jquery_Jsf_Jsf 2 - Fatal编程技术网

Javascript 通过JQuery传递参数更新h:dataTable

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>

如何使用JSF dataTable显示orderList项的行以及调用jQuery函数showOrderNum(orderNum)时的行 是否更新datatable以仅显示具有该orderNum的订单? 问题是让jquery函数调用dataTable的支持bean来传递参数

下面是一个示例,数据表:

<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());
    }

    ...
}