質問

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 など、例)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top