Question

J'ai la partie suivante de l'interface utilisateur sur JSF - c'est un simple formulaire de recherche avec champ de saisie et envoi:

    <h:form>
        <h:commandButton action="#{operation.found}" value="#{msg.search}" />
        <h:inputText name="searchParam"/>
    </h:form>

Et en conséquence, sur le backend, j'essaie d'obtenir la valeur du champ de saisie de la manière suivante:

public List<Store> getFound() {

    String name = (String) FacesContext.getCurrentInstance()
            .getExternalContext().getRequestParameterMap().get(
                    "searchParam");

    SessionFactory sessionFactory = new Configuration().configure()
            .buildSessionFactory();

    HibernateTemplate hbt = new HibernateTemplate();

    hbt.setSessionFactory(sessionFactory);

    foundStores = hbt.find(BEAN_PATH + " WHERE name = ?",
            new Object[] { name });

    return foundStores;

}

Et le nom null est passé au serveur.

Il semble que ce problème se produise dans la partie .jsf, mais à première vue, cela semble aller ...

Était-ce utile?

La solution

Vous devez pointer le <h:inputText> sur une propriété de bean géré:

<h:inputText name="searchParam" value="#{searchBean.searchParam}" />

et définissez dans votre bean:

private String searchParam;
public String getSearchParam() {..}
public void setSearchParam(String searchParam) {..}

puis utilisez searchParam dans votre getFound() méthode;

Bien sûr, vous devez définir le bean en tant que bean géré, mais je suppose que vous l'avez déjà fait:

<managed-bean>
    <managed-bean-name>searchBean</managed-bean-name>
    <managed-bean-class>mypackage.SearchBean</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>

Vous pouvez consulter un didacticiel JSF (tel que this , pour exemple)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top