2011-05-10 119 views
3

我最近嘗試來測試IE9我的JSF應用程序,發現所有的Ajax請求失敗與MalformedXML例外試圖訪問removeChild之屬性時抱怨未定義的對象。我觀察到了MyFaces 2.0.5和mojarra 2.1.1的問題。是否有任何已知限制或先決條件來支持IE 9?JSF 2 Ajax請求失敗的IE 9

要重現的問題,我把它釘到一個簡單的測試情況下由一個Ajax請求:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html"> 
    <f:view contentType="text/html"> 
    <h:head> 
     <h:outputScript name="jsf.js" library="javax.faces" target="head"/>  
    </h:head> 
    <h:body> 
     <h:form id="#{testBean.idForm}"> 
       <h1>Test of IE9 Ajax</h1> 
       <h:panelGroup id="#{testBean.idDiv}" layout="block"> 
        Text: <h:outputText value="#{testBean.text}"/> 
        <br/> 
        <h:commandLink 
         action="#{testBean.onAction}" 
         value="click me"> 
         <f:ajax render="#{testBean.idDiv}"/> 
        </h:commandLink> 
       </h:panelGroup> 
      </h:form> 
     </h:body> 
    </f:view> 
</html> 

的bean是

package ietest; 

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 

@ManagedBean 
@SessionScoped 
public class TestBean { 
     private int clickCount; 
     private String idForm="testForm"; 
     private String idDiv="testDiv"; 

     public String getText(){ 
     String text = "you clicked " + clickCount +" times"; 
     System.out.println("Return text " + text); 
     return text; 
    } 

    public String onAction(){ 
     System.out.println("onAction invoked"); 
     clickCount++; 
     return "iebug"; 
    } 

    public String getIdDiv() { 
     return idDiv; 
    } 

    public String getIdForm() { 
     return idForm; 
    } 
} 

回答

2

使用不能重現此問題鑽嘴魚科2.1.1 Tomcat 7.0.12。

enter image description here

你的問題是由別的東西造成的。我懷疑這是您的真實代碼不正確的使用,你有#{testBean.idDiv}動態的ID。嘗試使用固定ID(爲什麼你會使它變成動態的?)

此外,<h:outputScript>是完全多餘的,這個JSF已經默認包含這個。去掉它。如果問題更大,那肯定是由其他問題引起的,例如,一個不同的JSF版本的髒類路徑混合在一起。

+0

是的,我想知道這些組件標識符。 id屬性只接受文字(組件不會解析這些表達式)。儘管如此,他們似乎在Facelets的樹創建時間被解決和強制。在這個問題上,我還沒有找到任何規範。 – McDowell 2011-05-10 11:20:44

+0

@McDowell:是的,這種支持在JSF2中是新的。 – BalusC 2011-05-10 11:23:22

+0

我只是面對同樣的問題,但與Mojarra 2.0.2和IE9。這必須是McDowells答案中引用的[Mojarra問題](http://java.net/jira/browse/JAVASERVERFACES-1981)。 Mojarra 2.1同時解決了這個問題。但我應該如何處理版本2.0.2? – 2011-05-19 09:11:09

5

貌似鑽嘴魚科問題JAVASERVERFACES-1981

+0

就是這樣。爲避免更改JSF版本,我使用顯式導入的修補jsf.js。謝謝。 – Jens 2011-06-30 06:42:28

+0

非常感謝,它拯救了我的一天。它從2.0.21升級到2.2.8它工作正常。 – ziodraw 2016-01-22 11:36:23