JSF 1.2 - getClientId返回ID,以“null”开头,而不是容器列表,后跟ID

时间:2014-06-14 22:37:13

标签: java jsp jsf-1.2 myfaces trinidad

我们的应用程序使用在Weblogic Portal 10.3.2,JDK 1.6_22上运行的MyFaces 1.2.9和Trinidad 1.2.14实现的JSF 1.2。当系统负载很重时,我们在渲染的html页面中看到一个问题(使用HP LoadRunner模拟负载并模拟800个并发用户)。

我们看到生成的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希望这是一个缓存问题,但它没有任何影响。

1 个答案:

答案 0 :(得分:0)

您是否向开发人员询问了此部分代码?