2011-05-10 159 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