在JSF框架中访问html字段值

时间:2009-08-27 11:17:58

标签: javascript jsf

默认情况下,JSF动态呈现HTML字段ID名称。 ID名称以formname:id_some_random_number。

的格式随机生成

因此我无法使用document.getElementById(“”)。

这个问题有解决办法吗?

3 个答案:

答案 0 :(得分:2)

您只需指定输入的ID即可。 但请注意,ID将以包含输入字段的表单的ID为前缀。

例如:

<h:form id="myForm">
    ...
    <h:inputText id="myInput" .../>

inputText的真实ID是 myForm:myInput

因此,这个Javascript代码将起作用:

var obj = document.getElementById("myForm:myInput");

<小时/> 修改(用于精确度)

更确切地说,如果组件在Java中实现NamingContainer接口,则所有嵌套组件的ID都将以此组件的ID为前缀。这是<h:form/>组件的情况,也适用于<h:datatable/>

答案 1 :(得分:2)

如果所有其他方法都失败了,您可以尝试为元素提供唯一的css类,然后通过getElementsByClassName()访问它们。或者尝试浏览具有已知id的元素的childNodes()。或者,您可以在目标元素中添加已知id 的节点,然后使用.parentNode:)

答案 2 :(得分:1)

您可以使用UIComponent.getClientId获取生成的ID(JSF 2,如果您可以使用它,添加一个使用EL表达式更有用的无参数版本)。有关使用JSF组件标识符的提示,请参阅this blog post。(请注意警告)。