在jquery中选择按钮后动态加载JSF数据表



我有一个带有项目列表的数据表。对于某些项目,我将使用带有按钮的jquery对话框提示符。选择一个按钮说"是"将做AJAX调用,应该从bean列表中删除项目(工作良好)并重新加载数据表列表(此更新没有发生)。下面是我的代码片段。我正在使用JSF 2.0

  <h:dataTable binding="#{itemBean.dataTable}" value="#{itemBean.items}" 
    var="item" columnClasses="left,right" rowClasses="row1,row2" rows="4" >
        <h:column>
            <h:outputText styleClass="label" value="#{item.product.itemNo}"/>
        </h:column>
 </h:dataTable>
// ItemBean class - @Session scoped
private HtmlDataTable dataTable; 
private LinkedList<Item> items;
deleteRow(){ } method in bean is deleting item from the items list. 
 on button click in dialog prompt, .post ajax call is made as below.
    $.post('/WebApp/PromptAjaxServlet', {data:requestData}, function(response) {
                    if(validateResponse(response)){
                        $('#dialog-form').dialog('destroy');
                        $modalMessage.dialog('destroy');
                    } else {
                        // do
                    }
            });

有人可以帮助一个想法关于如何更新数据表列表后ajax调用。

您的dataTable需要在ajax响应中呈现。

没有关于jquery按钮如何生成ajax调用的更多细节,并且由于您使用dataTable的组件绑定,我建议在bean.delete()中添加代码。

FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().add(dataTable.getClientId());应该能做到

如果没有自定义视图处理程序,这将无法工作,这并不是微不足道的(阅读:大量工作)。当你想在JSF中添加一层额外的UI/ajax功能时,你应该看看现有的JSF组件库,比如PrimeFaces、RichFaces和OpenFaces。对于您的特定情况,例如,PrimeFaces有一个<p:dialog>组件。

或者如果你真的坚持在jQuery的帮助下自制UI/ajax,那么你应该寻找一个像Spring MVC这样基于动作的MVC框架,而不是像JSF这样基于组件的MVC框架。

参见:

  • 为jQuery选择哪个Java web框架?
  • 当UI可以用jQuery实现时,JSF还需要什么?

顺便说一下,为了达到您的功能要求,使用"原味"。在JSF中,你也可以直接抓取JavaScript的confirm()函数。

<h:column>
    <h:commandButton value="Delete" action="#{bean.delete}"
        onclick="return confirm('Are you sure?')" />
</h:column>

相关内容

  • 没有找到相关文章

最新更新