Domanda

Ho seguito la parte dell'interfaccia utente su JSF: è un semplice modulo di ricerca con campo di immissione e invio:

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

E di conseguenza, nel backend, cerco di ottenere il valore del campo di input nel modo seguente:

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;

}

E il nome null viene passato al backend.

Sembra quel problema nella parte .jsf, ma a prima vista sembra ok ...

È stato utile?

Soluzione

È necessario puntare <h:inputText> su una proprietà del bean gestito:

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

e definisci nel tuo bean:

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

e quindi utilizza searchParam nel tuo getFound() metodo;

Ovviamente, devi avere il bean definito come bean gestito, ma suppongo che tu l'abbia fatto:

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

Puoi controllare un tutorial JSF (come this , per esempio)

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