Web アプリに検索ボックスを実装したいと思います。JSF<h:form>
によって、products.xhtml?search=somestring にリダイレクトされるはずです。次の HTML と同じように動作するはずです。
<form action="products.xhtml" method="GET">
<input type="text" name="search" />
<input type="submit" value="Submit" />
</form>
私が遭遇した同様の問題のすべての解決策は、クエリ文字列なしで別のページにリダイレクトします
<h:form>
<h:inputText value="#{product.searchString}"/>
<h:commandButton value="Submit" action="products?faces-redirect=true&includeViewParams=true"/>
</h:form>
.
<h:form>
<h:inputText valueChangeListener="#{product.searchStringChanged}" />
<h:link value="Submit" outcome="products">
<f:param name="search" value="#{product.searchString}" />
</h:link>
</h:form>
OR はクエリ文字列を作成しますが、同じページにリダイレクトします。純粋な HTML を使用しない理由は、JSF セッション管理の利点を維持するためです。
編集
BalusC の投稿とhttps://blogs.oracle.com/enterprisetechtips/entry/post_redirect_get_and_jsfの助けを借りて、次の解決策を思いつきました。
<f:metadata>
<f:viewParam name="search" value="#{product.search}" />
</f:metadata>
<h:form>
<h:inputText value="${product.search}"/>
<h:commandLink action="products?faces-redirect=true&includeViewParams=true" value="Search"/>
</h:form>