Pergunta

Eu tenho parte seguinte UI em JSF - é formulário de busca simples, com campo de entrada e apresentar:

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

E correspondentemente, no backend, eu tentar obter o valor do campo de entrada seguinte maneira:

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 o nome nulo é passado para backend.

Parece que problema em parte .JSF, mas desde a primeira vista parece ok ...

Foi útil?

Solução

Você deve apontar o <h:inputText> a uma propriedade-managed bean:

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

e definir em seu bean:

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

e, em seguida, usar o searchParam em seu método getFound();

Claro, você precisa ter o feijão definido como bean gerenciado, mas eu supor que você tenha feito isso:

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

Você pode verificar um tutorial JSF (como este , por exemplo)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top