Pergunta

Eu preciso para determinar a identificação de um campo de formulário de dentro de um manipulador de ações. O campo é uma parte de um facelets incluídos componentes e para que o formulário irá variar.

included.xhtml

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

example_containing.xhtml

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

Como posso determinar a identificação do formulário no método update em tempo de execução? Ou ainda melhor, o ID do campo de entrada diretamente.

Foi útil?

Solução

Bind o botão para seu bean de apoio, em seguida, usar getParent () até encontrar a forma mais próxima.

Outras dicas

programaticamente eu usaria o método de jsight. Você pode saber o ID de seus elementos (a menos que você deixe JSF criá-los, eu não sei os meios para a numeração nos ids) olhando para ele. h: formulário é um contêiner de nomeação, por isso, enquanto você não tê-lo envolvido em outro contêiner de nomeação será containingForm: containedfield O ':' é o separador de nomeação por padrão, é JSF e os ids são criados como este, aproximadamente de qualquer maneira , (parentNamingContainerId:) * ComponentId

Desde método de atualização é do tipo actionListener, você pode acessar seu componente UI como segue

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

}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top