Não é possível obter o valor do campo de entrada JSF em JAVA backend
-
06-07-2019 - |
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 ...
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