2010-10-14 6 views
0

J'ai une zone de texte d'entrée, à l'intérieur d'une grille de panneaux. Cette grille de panneaux n'est rendue que lorsqu'une case à cocher est cochée. J'utilise un écouteur de changement de valeur pour écouter la case à cocher pour rendre la zone de texte. Ce mécanisme de rendu fonctionne, mais le problème est que je ne peux pas récupérer la valeur que l'utilisateur saisit dans la zone de texte. Il retourne toujours nul. Toute aide appréciée.Impossible de conserver mon texte d'entrée

// if box is checked, input text area is rendered 
public void showURL(ValueChangeEvent event) { 
    FacesContext context = FacesContext.getCurrentInstance(); 
    boolean value = (Boolean) event.getNewValue(); 
    setRenderURL(value); 
    context.renderResponse(); 
} 

<h:panelGrid columns="2" > 
<h:outputLabel value="Is position vacant?" /> 
<h:selectBooleanCheckbox valueChangeListener="#{formBean.showURL}" 
       onclick="submit()" 
      immediate="true" /> 
</h:panelGrid> 

<h:panelGrid columns="2" rendered="#{formBean.renderURL}" > 
<h:panelGroup> 
    <h:outputLabel value="Link: "/> 
      // trouble here: getURL always returns null 
    <h:inputText size="60" value="#{formBean.URL}" /> 
</h:panelGroup> 
</h:panelGrid> 

Répondre

0

Ajouter

<h:inputHidden value="#{formBean.renderURL}" /> 

à la même forme de sorte que la condition pour l'attribut rendu est conservé lors de la demande dans laquelle les composants d'entrée sont traitées. JSF ne va pas valider/convertir/mettre à jour un composant d'entrée lorsque l'attribut rendered ou l'un de ses parents évalue false.

+0

ne suivent pas vraiment mate. Je comprends la raison mais pas le code. donc je vais avoir deux # {formBean.renderURL}? –

+0

Celui qui est utilisé dans 'rendered' attribtue n'est pas soumis au serveur. Celui de 'h: inputHidden value' sera. De cette façon, JSF connaît la valeur d'origine de 'renderURL'. Sinon JSF utilisera sa valeur * default * qui est apparemment 'false', étant donné votre problème. – BalusC

Questions connexes