Domanda

Devo determinare l'ID di un campo modulo all'interno di un gestore azioni. Il campo fa parte di un componente facelets incluso e quindi il modulo varierà.

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>

Come posso determinare l'ID del modulo nel metodo update in fase di esecuzione? O meglio, l'ID del campo di input direttamente.

È stato utile?

Soluzione

Associa il pulsante al tuo backing bean, quindi usa getParent () fino a trovare il modulo più vicino.

Altri suggerimenti

A livello di programmazione userei il metodo di jsight. Puoi conoscere l'id dei tuoi elementi (a meno che non lasci che JSF li crei, non conosco i mezzi per numerare gli ID) osservandolo. h: form è un contenitore di denominazione, quindi finché non lo si avvolge in un altro contenitore di denominazione conterràForm: contenutefield Il ':' è il separatore di denominazione di default è JSF e gli ID vengono creati in questo modo, all'incirca comunque , (parentNamingContainerId:) * componentId

Poiché il metodo di aggiornamento è di tipo actionListener, è possibile accedere al componente UI come 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 .........

}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top