Java 백엔드에서 JSF 입력 필드 값을 얻을 수 없습니다
-
06-07-2019 - |
문제
JSF에서 UI 부분을 따르고 있습니다. 입력 필드가있는 간단한 검색 양식 및 제출.
<h:form>
<h:commandButton action="#{operation.found}" value="#{msg.search}" />
<h:inputText name="searchParam"/>
</h:form>
그리고 그에 따라 백엔드에서 다음 방향으로 입력 필드의 값을 얻으려고합니다.
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;
}
그리고 null 이름은 백엔드로 전달됩니다.
.jsf 부분에서 문제가있는 것 같지만 언뜻보기에서 괜찮아 보입니다 ...
해결책
당신은 지적해야합니다 <h:inputText>
관리 대상 부동산으로 :
<h:inputText name="searchParam" value="#{searchBean.searchParam}" />
콩 안에 정의하십시오.
private String searchParam;
public String getSearchParam() {..}
public void setSearchParam(String searchParam) {..}
그런 다음 SearchParam을 사용하십시오 getFound()
방법;
물론, 당신은 콩을 관리되는 콩으로 정의해야하지만, 당신이 그것을했다고 가정합니다.
<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>
JSF 자습서를 확인할 수 있습니다 (예 : 이것, 예를 들어)
제휴하지 않습니다 StackOverflow