Определить идентификатор формы контейнера JSF

StackOverflow https://stackoverflow.com/questions/123003

  •  02-07-2019
  •  | 
  •  

Вопрос

Мне нужно определить идентификатор поля формы из обработчика действий.Поле является частью включенного компонента 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 метод во время выполнения?Или, еще лучше, непосредственно идентификатор поля ввода.

Это было полезно?

Решение

Привяжите кнопку к своему компоненту поддержки, затем используйте getParent(), пока не найдете ближайшую форму.

Другие советы

Программно я бы использовал метод jsight.Вы можете узнать идентификатор своих элементов (если только вы не позволите JSF создавать их, я не знаю, как нумеровать идентификаторы), посмотрев на него.h:form — это контейнер именования, поэтому, пока вы не обернули его в другой контейнер именования, он будет содержать Form:containedfield. Разделитель имен «:» по умолчанию — JSF, и идентификаторы в любом случае создаются примерно так. , (parentNamingContainerId:)*comComponentId

Поскольку метод обновления имеет тип actionListener, вы можете получить доступ к своему компоненту пользовательского интерфейса следующим образом.

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 .........

}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top