在jsf中调用jquery ajax调用并使用数据渲染表

时间:2012-10-18 12:00:10

标签: ajax jsf

我在jsf中使用这个ajax调用

jQuery.ajax({

    url: '#{UserBean.searchUser}',
    type: 'POST',
    data: { firstName: firstName },
    success: function(data) {
        // render table
    },
    error: function(request, status, error) {
        //error description
    },
});

这里我获得成功,这意味着行动被召唤。我想从操作中检索用户列表,列表将如何从操作中发送?返回数据后,我想渲染表中的所有数据,格式为:

<h:dataTable 
    var="o"
    id="tblResult" 
    cellpadding="10px" 
    cellspacing="0px" 
    styleClass="searchTable">

    <h:column>
        <f:facet name="header">
        <h:outputText value="Student Name" />
    </f:facet> 
        <h:outputText value="User1" />
    </h:column>

    <h:column>
        <f:facet name="header">
            <h:outputText value="Student Id" />
        </f:facet>
            <h:outputText value="user1" />
    </h:column>
</h:dataTable>

我无法使用

<f:ajax />

因为我的网页是.jsp。

1 个答案:

答案 0 :(得分:0)

如果您已经提出这个问题,这并不容易。

您基本上需要创建一个自定义Ajax感知ViewHandler和一个自定义XML ResponseWritercustom tags,它们会生成所需的JavaScript代码来执行XMLHttpRequest工作和HTML DOM操纵。这也是大多数第三方JSF 1.x组件库已经为您完成的。它们都是开源的,因此您可以只看一看其源代码,以便通过示例了解它们是如何做到的。但这需要扎实的知识和对HTTP,HTML,XMLHttpRequest和JSF生命周期如何工作的理解。如果你已经问过这个问题......

我强烈建议migrate from JSP to Facelets。由于JSF 2.0和所有新的JSF 2.0标记/功能不适用于JSP,但仅适用于Facelets,因此不推荐使用JSP。此外,所有与JSF 2.0兼容的组件库都不再支持JSP。

另见: