Determinar a identificação do formulário recipiente JSF
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.
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 .........
}