为什么在jsf中使用任何a4j元素会在页面代码中添加第二个body和head标签?

ArturSkrzydło

在我的jsf页面代码中,我有一个与此结构类似的结构:

<frameset id="navframeset">
   <frame name="navframe" src='<c:url value="TopNavigation.jsf"/>'/>
   <frameset>
      <frame name="leftframe" src='<c:url value="Test1.jsf"/>'/>
      <frame name="tabbedframe" src='<c:url value="Test2.jsf"/>' />
</frameset>

在Test2.jsf中,我包括以下richfaces库:

<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>

当我尝试在页面代码中使用任何a4j元素(例如a4j:button)时,此代码将在我的输出html文件中生成:

<head>...</head>
<body>..</body>
<head><script xmlns="http://www.w3.org/1999/xhtml">A4J.AJAX._scriptEvaluated=true;</script></head>
<body marginwidth="0" marginheight="0"></body>

当我在页面代码中使用a4j元素时,会添加最后两行,它会复制现有的body和html标签(前两行)。我正在使用的richfaces版本是3.1.6.SR1。有人可以给我提示如何解决吗?

ArturSkrzydło

好的,这是3.1.6.SR1库的问题,这是最后一个支持jsf 1.1版本的库。我在Google中找到以下解决方案https://developer.jboss.org/thread/196997?tstart=0但是,它并不完美,并且并非在每种情况下都有效。因此,我试图以其他方式解决此问题,并且根据以上链接的建议,我将AJAX.js文件格式更改为richfaces-impl.jar。我从richfaces-3.2版本中获取了AJAX.js文件,并替换了3.1.6.SR1中的代码。以下部分应更改:

第1412行//添加了A4J.AJAX.TestScriptEvaluation();

A4J.AJAX.processResponse = function(req) {
        A4J.AJAX.TestScriptEvaluation();
        var options = req.options;
        var ajaxResponse = req.getResponseHeader('Ajax-Response');

第2014行的TestScriptEvaluation函数应替换为以下函数:

//Test for re-evaluate Scripts in updated part. Opera & Safari do it.
A4J.AJAX._scriptEvaluated=false;
A4J.AJAX.TestScriptEvaluation = function () {
if ((!document.all || window.opera) && !A4J.AJAX._scriptTested){


    try{    
        // Simulate same calls as on XmlHttp
        var oDomDoc = Sarissa.getDomDocument();
        var _span = document.createElement("span");
        document.body.appendChild(_span);
        // If script evaluated with used replace method, variable will be set to true
        var xmlString = "<html xmlns='http://www.w3.org/1999/xhtml'><sc"+"ript>A4J.AJAX._scriptEvaluated=true;</scr"+"ipt></html>";
        oDomDoc = (new DOMParser()).parseFromString(xmlString, "text/xml");
        var _script=oDomDoc.getElementsByTagName("script")[0];
        if (!window.opera && !A4J.AJAX.isWebkitBreakingAmps() && _span.outerHTML) {





            _span.outerHTML = new XMLSerializer().serializeToString(_script); 
        } else {
            var importednode ;
            importednode = window.document.importNode(_script, true);
            document.body.replaceChild(importednode,_span);
        }

    } catch(e){ /* Mozilla in XHTML mode not have innerHTML */ };

}

      A4J.AJAX._scriptTested = true;
    }

就这样。通过此更改,此问题不再存在。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当找到列表的倒数第二个元素时,为什么在其中使用`last`最快?

来自分类Dev

为什么FFmpeg会在我的文件中添加第二个字幕,即使我明确只添加了一个字幕呢?

来自分类Dev

第一个代码和第二个代码之间有什么区别,为什么我应该添加getString?

来自分类Dev

小书签代码中使用的javascript伪协议的第二个括号表示什么?

来自分类Dev

小书签代码中使用的javascript伪协议的第二个括号表示什么?

来自分类Dev

为什么J2EE名称中第二个?

来自分类Dev

为什么此代码中的第二个列表打印三次?

来自分类Dev

为什么此代码中的第二个列表打印了三遍?

来自分类Dev

为什么第二个矩形在我的 SVG 代码中不可见

来自分类Dev

当我在Bash函数中使用getopts时,为什么它在第二个调用中忽略参数?

来自分类Dev

为什么不能在.env文件中使用第二个变量

来自分类Dev

为什么在列表中获得第二个元组和作为 dict 最快?

来自分类Dev

在spring-data-neo4j-4中将第二个标签添加到继承的节点

来自分类Dev

在spring-data-neo4j-4中将第二个标签添加到继承的节点

来自分类Dev

为什么将代码包装到没有第二个参数且没有任何清理内容的“ useEffect”中?

来自分类Dev

为什么在第二个代码中却出现UnboundLocalError而不是第一个代码?

来自分类Dev

如何在Spring Data Neo4J 3.0.0(发行版)中的节点上添加第二个标签?

来自分类Dev

为什么 while 不会在第二个循环处停止

来自分类Dev

为什么在第二个图例中使用scale_linetype_manual和guides不能正确分配我的legend.text和颜色?

来自分类Dev

为什么zk为列表框渲染第二个body?

来自分类Dev

为什么我的第二个函数不返回任何东西?

来自分类Dev

为什么split会在第二个元素为空的情况下返回一个数组?

来自分类Dev

为什么不能将第二个EditText字段中的值添加到数据库中?

来自分类Dev

§7.1.6.3/ 1(C ++ 14)不接受下面第二个代码段中的构造。为什么是这样?

来自分类Dev

为什么Swift方法只需要标签作为第二个输入?

来自分类Dev

实体框架5,代码优先和使用第二个DbContext的添加迁移不起作用

来自分类Dev

在我的代码中,第二个 printf 没有打印任何值

来自分类Dev

为什么我添加的第二个jQuery代码部分/新的CSS部分导致第一个jQuery代码在我的页面上不起作用

来自分类Dev

为什么我不能访问此void类型数组的第二个元素

Related 相关文章

  1. 1

    当找到列表的倒数第二个元素时,为什么在其中使用`last`最快?

  2. 2

    为什么FFmpeg会在我的文件中添加第二个字幕,即使我明确只添加了一个字幕呢?

  3. 3

    第一个代码和第二个代码之间有什么区别,为什么我应该添加getString?

  4. 4

    小书签代码中使用的javascript伪协议的第二个括号表示什么?

  5. 5

    小书签代码中使用的javascript伪协议的第二个括号表示什么?

  6. 6

    为什么J2EE名称中第二个?

  7. 7

    为什么此代码中的第二个列表打印三次?

  8. 8

    为什么此代码中的第二个列表打印了三遍?

  9. 9

    为什么第二个矩形在我的 SVG 代码中不可见

  10. 10

    当我在Bash函数中使用getopts时,为什么它在第二个调用中忽略参数?

  11. 11

    为什么不能在.env文件中使用第二个变量

  12. 12

    为什么在列表中获得第二个元组和作为 dict 最快?

  13. 13

    在spring-data-neo4j-4中将第二个标签添加到继承的节点

  14. 14

    在spring-data-neo4j-4中将第二个标签添加到继承的节点

  15. 15

    为什么将代码包装到没有第二个参数且没有任何清理内容的“ useEffect”中?

  16. 16

    为什么在第二个代码中却出现UnboundLocalError而不是第一个代码?

  17. 17

    如何在Spring Data Neo4J 3.0.0(发行版)中的节点上添加第二个标签?

  18. 18

    为什么 while 不会在第二个循环处停止

  19. 19

    为什么在第二个图例中使用scale_linetype_manual和guides不能正确分配我的legend.text和颜色?

  20. 20

    为什么zk为列表框渲染第二个body?

  21. 21

    为什么我的第二个函数不返回任何东西?

  22. 22

    为什么split会在第二个元素为空的情况下返回一个数组?

  23. 23

    为什么不能将第二个EditText字段中的值添加到数据库中?

  24. 24

    §7.1.6.3/ 1(C ++ 14)不接受下面第二个代码段中的构造。为什么是这样?

  25. 25

    为什么Swift方法只需要标签作为第二个输入?

  26. 26

    实体框架5,代码优先和使用第二个DbContext的添加迁移不起作用

  27. 27

    在我的代码中,第二个 printf 没有打印任何值

  28. 28

    为什么我添加的第二个jQuery代码部分/新的CSS部分导致第一个jQuery代码在我的页面上不起作用

  29. 29

    为什么我不能访问此void类型数组的第二个元素

热门标签

归档