3

我需要从动作处理程序中确定表单字段的 ID。该字段是包含的 facelets 组件的一部分,因此形式会有所不同。

包含的.xhtml

<ui:component>
  <h:inputText id="contained_field"/>
  <h:commandButton actionListener="#{backingBean.update}" value="Submit"/>
</ui:component>

示例_包含.xhtml

<h:form id="containing_form">
  <ui:include src="/included.xhtml"/>
</h:form>

如何update在运行时确定方法中表单的 ID?或者更好的是,直接输入字段的 ID。

4

3 回答 3

5

将按钮绑定到您的支持 bean,然后使用 getParent() 直到找到最近的表单。

于 2008-09-23T19:25:15.643 回答
0

以编程方式,我会使用 jsight 的方法。通过查看元素,您可以知道元素的 id(除非您让 JSF 创建它们,否则我不知道在 id 中编号的方法)。h:form 是一个命名容器,所以只要你没有将它包装在另一个命名容器中,它将包含Form:containedfield ':' 是命名分隔符,默认情况下是 JSF,id 是这样创建的,大致无论如何, (parentNamingContainerId:)*componentId

于 2008-10-01T13:12:18.503 回答
0

由于 update 方法是 actionListener 类型,您可以按如下方式访问您的 UI 组件

public void update(javax.faces.event.ActionEvent ac) {
      javax.faces.component.UIComponent myCommand = ac.getComponent( );
      String id = myCommand.getId(); // get the id of the firing component

      ..... your code .........

}
于 2008-11-05T19:06:04.217 回答