Pregunta

Tengo la siguiente parte de la interfaz de usuario en JSF: es un formulario de búsqueda simple con campo de entrada y envío:

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

Y correspondientemente, en el backend, intento obtener el valor del campo de entrada de la siguiente manera:

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;

}

Y el nombre nulo se pasa al backend.

Parece que el problema en la parte .jsf, pero a primera vista parece estar bien ...

¿Fue útil?

Solución

Debe apuntar el <h:inputText> a una propiedad de bean administrado:

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

y define en tu bean:

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

y luego use searchParam en su getFound() método;

Por supuesto, debe tener el bean definido como bean administrado, pero supongo que lo ha hecho:

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

Puede consultar un tutorial de JSF (como esto , para ejemplo)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top