在#{rich:clientId()}函数中使用动态元素ID

时间:2013-12-02 07:49:18

标签: javascript jsf jsf-2 richfaces el

我们可以使用rich:clientId()函数按静态ID获取元素,如下所示

document.getElementById('#{rich:clientId(JSF_ID)}').click(); 

但是,我需要使用动态ID,其形式为var + "_ID",其中var可以是employeestudent等,从而导致{{1 },employee_ID作为实际ID。

我尝试如下:

student_ID

然而,它没有用。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

看起来你是通过JavaScript设置dynamicID,我是对的吗? 如果是,则在呈现页面期间,EL-expression #{rich:clientId(dynamicID)}在服务器上无法被评估为EL,因为dynamicID仅在客户端(=浏览器)上可用时已经构建页面在服务器上并发送到浏览器。

var来自哪里?如何将其应用于dynamicID的组件?你不能对getElementById使用相同的方法吗?

答案 1 :(得分:0)

要在服务器端将JSF中的变量与变量连接起来,请参阅以下已经回答的帖子Concatenate strings in JSF/JSP EL and Javascript。基本上它为您提供了为jsp / jsf创建自己的连接函数的方法。工作非常需要。

作为提示:您可以使用#{rich:element(JSF_ID)}代替document.getElementById('#{rich:clientId(JSF_ID)}')来保持源可重复使用 - 它会呈现相同的结果。

祝你好运......