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>
が管理対象Beanプロパティを指すようにする必要があります。
<h:inputText name="searchParam" value="#{searchBean.searchParam}" />
そしてあなたのBeanで定義します:
private String searchParam;
public String getSearchParam() {..}
public void setSearchParam(String searchParam) {..}
そしてgetFound()
メソッドでsearchParamを使用します;
もちろん、BeanをマネージドBeanとして定義する必要がありますが、私はあなたがそれを行ったと仮定しています:
<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チュートリアル( this など、例)
所属していません StackOverflow