Kann nicht JSF Eingabefeld Wert auf JAVA-Backend erhalten
-
06-07-2019 - |
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 ...
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