【问题标题】:JSF 1.2 - getClientId returns ID begining with "null" instead of container list followed by IDJSF 1.2 - getClientId 返回以“null”开头的 ID,而不是后跟 ID 的容器列表
【发布时间】:2014-08-05 04:03:33
【问题描述】:

我们的应用程序使用由 MyFaces 1.2.9 和 Trinidad 1.2.14 实现的 JSF 1.2,在 Weblogic Portal 10.3.2、JDK 1.6_22 上运行。当系统负载过重时(使用 HP LoadRunner 模拟负载并模拟 800 个并发用户),我们看到呈现给浏览器的 html 页面存在问题。

我们看到生成的 id 用于标记 id,并且在 javascript 中丢失了父容器名称,而是带有 null 后跟字段 id。

我们的 JSP 文件布局如下:

homemenu.jsp

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page contentType="text/html;charset=windows-1252"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://myfaces.apache.org/trinidad" prefix="tr" %>
<%@ taglib uri="http://myfaces.apache.org/trinidad/html" prefix="trh" %>
<f:view>
    <f:subview id="renderBody">
        <jsp:include page="../tabMenu.jsp" />  
    </f:subview>
...

tabMenu.jsp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<%@ page contentType="text/html;charset=windows-1252"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://myfaces.apache.org/trinidad" prefix="tr" %>
<%@ taglib uri="http://myfaces.apache.org/trinidad/html" prefix="trh" %>

<f:view>
     <f:subview id="tabmenu">  
        <jsp:include page="portalTemplate.jsp" />  
     </f:subview>
...

生成的 HTML 将包含如下代码:

<input type="hidden" name="org.apache.myfaces.trinidad.faces.FORM" value="renderBody:tabmenu:j_id_id2pc3">

value 属性包含正确的容器 ID,在本例中为 renderBody:tabmenu

在系统负载一段时间后(大约 30 - 45 分钟,大约 800 个并发用户/会话)生成的 HTML 将丢失容器 ID。

<input type="hidden" name="org.apache.myfaces.trinidad.faces.FORM" value="null:j_id_id2pc3">

该值以前将 renderBody:tabmenu 作为其父 ID,现在改为 null。

现在这不会导致应用程序功能出现问题,但会导致我们的 LoanRunner 测试出现问题。 LoadRunner 正在寻找完整的 ID,当系统开始将它们生成为 null 时,这会导致 LoanRunner 测试失败并出错。

什么可能导致生成的 ID 丢失其父 ID?为什么我们只在系统负载时看到这个?一旦系统开始生成null,它会继续生成null,即使在没有负载的情况下,直到应用程序重新启动。

我们已尝试设置系统属性 org.apache.myfaces.trinidad.CLIENT_ID_CACHING=off 希望这是一个缓存问题,但它没有任何影响。

【问题讨论】:

    标签: java jsp jsf-1.2 myfaces trinidad


    【解决方案1】:

    你问过这段代码的开发者吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-07
      • 1970-01-01
      • 1970-01-01
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多