未识别JQuery AJAX JSF / jsf标记。找不到FacesContext

时间:2011-05-25 02:30:14

标签: jquery ajax jsf

使用jquery ajax和jsf组合时遇到问题。我不确定这是否是一个常见的问题,可以处理,但希望得到一个解决方案。

这是场景。我们正在用jsf开发一个门户项目。所以在一个页面上我们必须根据表中的行加载大量数据(有时候是appx 300-400),每行都有一个需要打开弹出窗口的链接。所以为了不打击页面的性能,我打算懒得加载jsp(弹出内容)。所以想去找ajax。 jsp具有jsf标记,这些标记不能被ajax加载识别。我理解当jsp加载jj时它将是一个普通/独立(un jsf'tified)版本。

所以我的问题是:如何在这个场景中制作jsp(弹出内容)jsf'tified,以便jsf标签可见。

目前我无法找到FacesContext。

我正在使用以下代码:

jQuery.ajax({
    type: "GET",
    cache: false,
    contentType: "text/html; charset=ISP-8859-1" ,
    url: '<%=renderResponse.encodeURL(renderRequest.getContextPath()+ "/tempfolder/tempLoader.jsp") %>',
    data:{param1:66, param2:88},
    success:function(msg) {    
        jQuery(".loadContent").html(msg);
        jQuery("#viewpopupdiv").children().show();
    }
});

我的jsp:

<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@taglib uri="http://java.sun.com/portlet" prefix="portlet"%>
<%@taglib uri="http://www.ibm.com/jsf/html_extended" prefix="hx"%>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>


<div id="view"  style="text-align:left">

<table class="viewpopupdiv" style="width:480px;background-color:#efedea;border-width: thin; border-color: #ff6633; border-style:solid;" cellpadding="0" cellspacing="0" border="0">
        <tr>
            <td>
                <table style="width:100%">
                    <tr>
                        <td>

                            <table style="width:100%;background-color:#424341;">
                                <tr>
                                    <td class="editLineHeaderDarkLeft">  
                                        <span class="">Line ID</span> :&nbsp;<span class="headerValueForPopup"><%=lineDetails.getDisplayableOrderLineId()%></span></td>
                                    <td class="editLineHeaderDarkCenter">  
                                        <span class="">Order Number</span>  :&nbsp;<span class="orderNumberHeaderValueForPopup"><%=lineDetails.getDisplayableOrderHeaderId()%></span></td> 
                                    <td class="editLineHeaderDarkRight"><div href="#" onclick="closePopupForEditLine('closepopupdiv')"><img class="close" src='<%=imgURL%>' border="0"></div>
                                    </td>
                                </tr>
                            </table>

<td class="editLineHeaderDarkLeft">                              
<div class="chargeTypeDropListJQ">  
                                        <h:selectOneMenu  value="#{popupBean.chargeTypeId}" styleClass="selectOneMenu">
                                            <f:selectItems value="#{popupBean.chargeType}" />
                                        </h:selectOneMenu>
                                    </div>
</td>
                    </tr>  
                </table>
</td></tr></table></div>

1 个答案:

答案 0 :(得分:0)

  

找不到FacesContext

当您使用JSF组件作为“普通vanilla”JSP运行JSP页面而不调用FacesServlet时,您将收到此异常。这是负责创建FacesContext的人。请求网址需要与<url-pattern> FacesServlet匹配,因为它已在web.xml中定义,以使所有JSF代码正常运行。

假设网址格式为*.jsf,则需要更改

url: '<%=renderResponse.encodeURL(renderRequest.getContextPath()+ "/tempfolder/tempLoader.jsp") %>',

url: '<%=renderResponse.encodeURL(renderRequest.getContextPath()+ "/tempfolder/tempLoader.jsf") %>',