web-dev-qa-db-fra.com

Passez la valeur de texte d'entrée à la méthode du bean sans lier la valeur d'entrée à la propriété du bean

Puis-je transmettre une valeur de champ de texte d'entrée à une méthode de bean sans lier la valeur à une propriété de bean?

<h:inputText value="#{myBean.myProperty}" />
<h:commandButton value="Test" action="#{myBean.execute()} />

Puis-je faire cela sans faire de sauvegarde temporaire dans #{myBean.myProperty}?

37
membersound

Liez le composant sous la forme UIInput à la vue et utilisez UIInput#getValue() pour transmettre sa valeur comme argument de méthode.

<h:inputText binding="#{input1}" />
<h:commandButton value="Test" action="#{myBean.execute(input1.value)}" />

avec

public void execute(String value) {
    // ...
}

Notez que la valeur est de cette façon déjà convertie et validée de la manière habituelle JSF.

Voir également:

51
BalusC

Vous pouvez récupérer les paramètres du formulaire en obtenant la demande et en utilisant plain Java EE ServletRequest # getParameter . Lorsque vous utilisez cette méthode, n'oubliez pas de définir l'identifiant et le nom de vos composants:

<h:form id="myForm">
    <h:inputText id="txtProperty" /> <!-- no binding here -->
    <input type="text" id="txtAnotherProperty" name="txtAnotherProperty" />
    <h:commandButton value="Test" action="#{myBean.execute()} /> 
</h:form>

Bean géré:

@ManagedBean
@RequestScoped
public class MyBean {
    public void execute() {
        HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
        String txtProperty = request.getParameter("myForm:txtProperty");
        //note the difference when getting the parameter
        String txtAnotherProperty= request.getParameter("txtAnotherProperty");
        //use the value in txtProperty as you want...
        //Note: don't use System.out.println in production, use a logger instead
        System.out.println(txtProperty);
        System.out.println(txtAnotherProperty);
    }
}

Un autre fil avec plus d'informations:

15
Luiggi Mendoza