【问题标题】:JSF, How to get Id of <h:input> from Managed BeanJSF,如何从托管 Bean 获取 <h:input> 的 Id
【发布时间】:2025-12-04 22:05:01
【问题描述】:

我的 XHTML 页面中有这段代码:

<p:cellEditor>
    <f:facet name="output">
        <h:outputText value="#{complaint.description}" />
    </f:facet>
    <f:facet name="input">
        <p:inputText id="thisInput" value="#{complaint.description}" style="width:96%"/>
    </f:facet>
</p:cellEditor>

如何在托管 Bean 中获取 id "this Input" 的值?

【问题讨论】:

  • 为什么要获取id???
  • 我有两个输入(IP1 和 IP2)。当我输入一个值时,我想知道我采用了 IP1 或 IP2 中的值是什么输入

标签: java jsf jakarta-ee primefaces richfaces


【解决方案1】:

您可以使用binding 属性将组件绑定到托管bean(假设component 是您想要绑定组件的托管bean):

<p:inputText id="thisInput" 
             value="#{complaint.description}" 
             style="width:96%"
             binding="#{complaint.inputText}" />

在托管 bean 中,您必须有一个成员和访问器方法(getter 和 setter):

private InputText inputText;

//+ accessors

最后,为了在托管bean中获取组件的id,可以调用UIComponent#getClientId()方法。例如:

String id = inputText.getClientId(); 

旁注:将组件绑定到托管 bean 被视为一种做法,应该避免,除非没有非常具体的原因需要组件绑定。

【讨论】: