Frage

ich auf JSF folgenden UI-Teil haben - es ist einfach ein Suchformular mit Eingabefeld und einreichen:

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

Und dementsprechend auf Backend, i versuche Wert Eingabefeld neben Art und Weise zu erhalten:

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;

}

Und null Name wird auf Backend übergeben.

Es scheint, dieses Problem in .jsf Teil, aber von dem ersten Blick sieht ok ...

War es hilfreich?

Lösung

Sie müssen die <h:inputText> auf ein verwaltetes-Bean-Eigenschaft verweisen:

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

und definieren in Ihrem Bean:

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

und verwenden Sie dann den searchParam in Ihrer getFound() Methode;

Natürlich müssen Sie die Bohne als Managed Bean definiert haben, aber ich nehme an, Sie haben es getan:

<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>

Sie können ein JSF-Tutorial überprüfen (wie diese , für Beispiel)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top