2012-11-28 39 views
2

我非常失望。我仍在寻找一个错误的原因,我更改了页面的模板布局后得到了一个错误。我在Tomcat 7.0.32和JSF 2.1.13 Library中使用Primefaces 3.4.2。script5009:'Primefaces'在IE9中未定义 - 重新加载后错误消失

这是什么?:错误

在Opera,FF和Chrome:

所有的元素都是满载并显示。

但是,如果您选择或调用menuitem(定义的非ajax),页面会按预期重新加载。但没有任何反应。如果你调用按钮一段时间,它会被调用。内容部分被更改。

如果您选择并排数据表或类似的东西,该页面运行非常流畅。而且您无需再尝试更改内容部分。

在IE6 +尤其IE9:

的页面被加载和显示IE9,在大多数情况下,所有的元素。但是没有可以调用的盘旋或ajax事件。该页面似乎被冻结。

您是否重新加载页面,它按预期工作。快速而流畅。

我做了什么来调试

我开始找到它的原因。我查看了每个浏览器的控制台。非IE浏览器没有提供任何提示。在大多数情况下,在这个方向上没有错误。

如果你开始一个新的会话,并且你第一次加载页面,那么IE会说下列错误。

IE CONSOLE

重装错误消失后。

tomcat也不例外。

我做我的布局是什么:

我创建JQuery的的ThemeRoller自定义主题,并实现了它的链接。 注意:如果您使用的是默认主题,该错误依然存在

我决定删除左侧的<p:menu>并将其移动到标题中。 注意:我将全部更改为默认值,该错误仍然存​​在。

我删除了所有<p:panelgrid> elemtents并将其切换为简单<table> s 注意:但我认为不是这是错误的原因。

我需要添加和修复IE浏览器中z-index的已知问题。您可以在layout.xhtml的脚本部分看到它 - 没有它,菜单栏位于内容部分中的元素背景中。 注意:我删除它并没有任何反应,错误仍然存​​在。

我删除了所有的缓存。但没有。我希望有人能帮助我或找到我犯的错误。

[SOURCE FILES]

我的模板布局文件= layout.xhtml

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:ui="http://java.sun.com/jsf/facelets" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:f="http://java.sun.com/jsf/core"> 
    <f:view contentType="text/html"> 
     <h:head> 
      <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
      <meta http-equiv="refresh" content="#{session.maxInactiveInterval};url=#{request.contextPath}" /> 
      <f:event listener="#{loginController.verifyUseLogin()}" type="preRenderView" /> 

      <link type="text/css" rel="stylesheet" href="#{request.contextPath}/faces/resources/primefaces-fes/theme.css"/> 
      <link type="text/css" rel="stylesheet" href="#{request.contextPath}/faces/resources/css/app.css"/> 


      <title>Willkommen im FLOW/Fast Lean Overhead Workflow - Dies ist ein PROTOTYP</title> 
      <script type="text/javascript"> 

       PrimeFaces.locales['de'] = { 
        closeText: 'Schließen', 
        prevText: 'Zurück', 
        nextText: 'Weiter', 
        monthNames: ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'], 
        monthNamesShort: ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], 
        dayNames: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], 
        dayNamesShort: ['Son', 'Mon', 'Die', 'Mit', 'Don', 'Fre', 'Sam'], 
        dayNamesMin: ['S', 'M', 'D', 'M ', 'D', 'F ', 'S'], 
        weekHeader: 'Woche', 
        firstDay: 1, 
        isRTL: false, 
        showMonthAfterYear: false, 
        yearSuffix: '', 
        timeOnlyTitle: 'Nur Zeit', 
        timeText: 'Zeit', 
        hourText: 'Stunde', 
        minuteText: 'Minute', 
        secondText: 'Sekunde', 
        currentText: 'Aktuelles Datum', 
        ampm: false, 
        month: 'Monat', 
        week: 'Woche', 
        day: 'Tag', 
        allDayText: 'Ganzer Tag' 
       }; 

       //needed to get the Submenu in menubar to the front (z-index bug) 
       $(function() { 
         var zIndexNumber = 1000; 
         // Put your target element(s) in the selector below! 
         $("div").each(function() { 
           $(this).css('zIndex', zIndexNumber); 
           zIndexNumber -= 10; 
         }); 
       }); 

      </script>    
     </h:head> 
     <h:body> 
      <div id="outerWrapper"> 

       <table id="contentWrapper"> 
        <tr> 
         <td id ="header"> 
          <ui:insert name="header"/> 
         </td> 
        </tr> 
        <tr> 
        <td id="content"> 
         <ui:insert name="content"/> 
        </td> 
        </tr> 
       </table> 
      </div> 
     </h:body> 
    </f:view> 
</html> 

app.xhtml

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<ui:composition template="./layout/layout.xhtml" 
       xmlns:ui="http://java.sun.com/jsf/facelets"> 

    <ui:define name="header"> 
     <ui:include src="./misc/menuheader.xhtml"/> 
    </ui:define> 

    <ui:define name="content"> 
     <ui:include src="#{appController.content}.xhtml" /> 
    </ui:define> 

</ui:composition> 

导航方法来回米豆@ManagedBean - @SessionScoped

public void doNav(){ 

    FacesContext context = FacesContext.getCurrentInstance(); 
    String selectedPageViewId = 
    context.getExternalContext().getRequestParameterMap().get("pageViewID"); 

    if (selectedPageViewId.equalsIgnoreCase("page1")) 
    { 
    content = "/app/includes/hldyplanning"; 
    message = "Urlaub eintragen"; 
    ELContext elContext = FacesContext.getCurrentInstance().getELContext(); 
    hplC = (HldyPlanningController) FacesContext.getCurrentInstance().getApplication() 
        .getELResolver().getValue(elContext, null, "hldyPlanningController"); 
    hplC.init(); 
    } 
    else if (selectedPageViewId.equalsIgnoreCase("page2")) 
    { 
    message = "persönliche Übersicht"; 
    content = "/app/includes/persview"; 
    } [...]   
    else { context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Seite nicht gefunden.", "Wie sind Sie hier hingekommen?")); } 
} 

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:f="http://java.sun.com/jsf/core" 
     xmlns:p="http://primefaces.org/ui" 
     xmlns:c="http://java.sun.com/jsp/jstl/core"> 

    <h:form id="frm_plan"> 
     <p:messages id="messages" autoUpdate="false" closable="true"/> 
     [...] 
    </h:form> 
</html> 

标题:

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
xmlns:f="http://java.sun.com/jsf/core" 
xmlns:h="http://java.sun.com/jsf/html" 
xmlns:p="http://primefaces.org/ui"> 
    <h:form id="frm_menu"> 
     <table class="steamlessBody" style="width:100%;"> 
      <tr> 
       <td class="header_boxes" style="width: 200px;"> 
        #{appController.message} 
       </td> 
       <td class="header_boxes" style="width: 650px;"> 
        <p:menubar autoDisplay="true" style="font-size: 14px; border: none; background: none;"> 
         <p:submenu id="sub1" icon="ui-icon-calendar" label="Urlaubsplanung"> 
          <p:menuitem id="btn_page1" ajax="false" icon="ui-icon-plusthick" value="Urlaub eintragen" action="#{appController.doNav()}"> 
           <f:param id="pageHLDYPLANNING" name="pageViewID" value="page1"/> 
          </p:menuitem> 
          [...] 
         </p:submenu> 
         [...] 
         <p:menuitem id="btn_logout" ajax="false" icon="ui-icon-circle-close" value="Ausloggen" action="#{appController.logout()}"/> 
        </p:menubar> 
       </td> 
       <td class="head_text"> 
        Eingeloggt als #{loginController.sessionData.user_name} 
       </td> 
      </tr> 
     </table> 
     <p:dialog widgetVar="help" id="dlg_help" closable="true" header="Hilfe" modal="true" showEffect="clip" hideEffect="clip"> 

     </p:dialog> 
    </h:form> 
</html> 
+0

我得到相同的错误(在p:commandButton),你能找到解决方案吗? –

+0

啊下面的答案为我修好了。我没有尝试,因为它没有被OP接受为答案。有用 :) –

回答

3

我今天也有类似的问题。问题原来是有问题的页面的链接。

我有类似下面的代码:

<p:commandLink action="badPage.jsf" id="btnBadPage" 
    value="Bad Page" actionListener="#{myBean.someAction}" /> 

当我改变了行动网址如下,我停止接受IE中的JavaScript错误:

<p:commandLink action="badPage.xhtml?faces-redirect=true" id="btnBadPage" 
    value="Bad Page" actionListener="#{myBean.someAction}" /> 
0

我只是换任何有问题的组件不要在<div>标签中工作,并且通常,这些类型的错误消失(当它们确实发生时)。

例如,我在<p:dataTable>中遇到了分页问题,​​直到我将其包装在<div>中后才生效。之后,它工作。

无论如何,这是人们尝试别的东西。

相关问题