我们可以使用rich:clientId()
函数按静态ID获取元素,如下所示
document.getElementById('#{rich:clientId(JSF_ID)}').click();
但是,我需要使用动态ID,其形式为var + "_ID"
,其中var
可以是employee
,student
等,从而导致{{1 },employee_ID
作为实际ID。
我尝试如下:
student_ID
然而,它没有用。我怎样才能做到这一点?
答案 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)}')
来保持源可重复使用 - 它会呈现相同的结果。