【问题标题】:How to get element from javascript in JSF 2.0如何在 JSF 2.0 中从 javascript 中获取元素
【发布时间】:2011-02-01 09:27:50
【问题描述】:

我有类似的 JSF 代码:

<h:inputText id="from" value="#{fromToMBean.fromName}"/>

我想通过 ID (from) 从 JavaScript 中获取此元素,但我不能,因为在生成的 HTML 中它是 j_idt8:from

我怎样才能得到这个元素,例如jQuery?有什么办法可以强制 JSF2 不改变 id?

【问题讨论】:

标签: javascript jsf-2


【解决方案1】:

您可以使用 jquery。简单地说,使用一个选择器来定义它应该包含的文本。像这样的:

$( "input[name*='from']" )

'*=' 用于表示名称属性包含一些字符串。还有类似含义的'~='

详细解释和示例请访问http://api.jquery.com/attribute-contains-selector/

【讨论】:

    【解决方案2】:

    有什么办法可以强制 JSF2 不改变 ids 吗?

    您可以设置prependId="false" 这样在生成的 HTML 中它将是 from 代替 j_idt8:from

    prependId : 指示此表单是否应在前面添加的标志 在 clientId 生成期间它的 id 到它的后代的 id 过程。如果未设置此标志,则默认值为 true。

    我怎样才能得到这个元素,例如jQuery?

    你可以在jQuery中使用ancestorComponent:from来获取这个元素。

    实际上 j_idt8:from 中的 j_idt8 是您的&lt;h:inputText/&gt; 的祖先组件的自动生成的ID

    例如

    <h:form id="form">
    <h:inputText id="from" value="#{fromToMBean.fromName}"/>
    </h:form>
    

    现在生成的输入文本 id 将是 form:from

    如果您不向组件提供 id,那么您的浏览器会动态生成该 ID。所以不要忘记为组件提供 id。

    【讨论】:

      【解决方案3】:

      为了获得组件的完整 ID,请使用 EL 隐式对象及其属性,例如 #{cc.clientId}#{component.clientId}。来源:Acquire full prefix for a component clientId inside naming containers with JSF 2.0

      【讨论】:

        【解决方案4】:

        在 JSF 1.2 中,您可以使用 forceId="true"。我不确定您是否可以在 JSF 2 中使用 t:input,但您应该可以。那么它在 HTML 中的 ID 就是你所期望的。

        【讨论】:

          【解决方案5】:

          您可以使用仅分配给此元素的自定义类并使用 css 选择器,也可以为表单分配一个 id 并获取 id 为 formid:from 的元素。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-12-11
            • 1970-01-01
            • 2014-02-28
            • 1970-01-01
            • 2014-02-19
            • 2011-03-29
            • 1970-01-01
            • 2011-04-18
            相关资源
            最近更新 更多