JSF portlet为不同的环境生成不同的Id

时间:2013-03-22 07:59:00

标签: jsf primefaces liferay-6

我正在创建一个动态表单,根据选择的单选按钮隐藏/取消隐藏字段。 我正在使用下面给出的普通javascript函数,它在我的门户环境中工作正常(ids是我通过查看源获得的JSF ID)。

 function printHiddenValue(){
         alert("hello");
       alert(document.getElementById('A1938:j_idt4:create-ticket:hiddenId').value); 
       if(document.getElementById('A1938:j_idt4:create-ticket:j_idt19:0').checked){
           alert("incident sellected")
       } else
           {
           alert("change sellected")

           }

    }

但是当我在不同的环境中部署战争时失败,因为门户网站环境会生成不同的ID。

1 个答案:

答案 0 :(得分:1)

您不应该依赖动态ID,而不仅仅是A1938部分内容,如果您更改页面结构,j_idt4也可能会更改。您应该为组件j_idt4分配id,对于第一部分,您可以使用EL #{facesContext.externalContext.response.namespace}来获取portlet的命名空间:

document.getElementById('#{facesContext.externalContext.response.namespace}:j_idt4:create-ticket:hiddenId')