ユーザーがinputTextコンポーネントに文字列を入力できるようにしてから、Enterキーを押すかボタン/リンクをクリックして、入力した文字列を「queryString」というパラメーターとして別のページに渡します。
プライムフェイスとプリティフェイスを使用しています。
私はいくつかの異なることを試しました。JSF ページ コード自体からの作業:
<p:panel
id="quickSearch"
header="Quick Search"
toggleable="true"
closable="false"
toggleSpeed="500"
closeSpeed="500">
<h:form>
<p:inputText
id="queryStringInput"
name="queryStringInput"
value="#{dBean.queryString}" />
<p:commandLink
id="submitQuery"
ajax="false"
value="Search"
type="submit"
action="pretty:content">
<f:param
id="queryString"
name="queryString"
value="#{dBean.queryString}" />
</p:commandLink>
</h:form>
</p:panel>
別の方法:
<p:panel
id="quickSearch"
header="Quick Search"
toggleable="true"
closable="false"
toggleSpeed="500"
closeSpeed="500">
<h:form>
<p:inputText
id="queryStringInput"
name="queryStringInput"
value="#{dBean.queryString}" />
<h:link
id="link"
outcome="pretty:content"
value="Search" >
<f:param
id="queryString"
name="queryString"
value="#{dBean.queryString}" />
</h:link>
</h:form>
</p:panel>
また、Bean に転送作業を行わせることも試みました。
ページコード:
<p:panel
id="quickSearch"
header="Quick Search"
toggleable="true"
closable="false"
toggleSpeed="500"
closeSpeed="500">
<h:form>
<p:inputText
id="queryStringInput"
name="queryStringInput"
value="#{dBean.queryString}" />
<p:commandButton
id="submitQuery"
ajax="false"
value="Search"
actionListener="#{dBean.runSearch}" />
</h:form>
</p:panel>
豆 :
public void runSearch() {
logger.debug("the query string is: " +getQueryString());
FacesContext context = FacesContext.getCurrentInstance();
NavigationHandler handler = FacesContext.getCurrentInstance().getApplication().getNavigationHandler();
String url = "/content?queryString=" + getQueryString();
handler.handleNavigation(context, null, url);
}
思い通りに動かせないようです。ここにかなりの設定からのスニペットがあります:
<url-mapping id="content">
<pattern value="/content"/>
<query-param name="queryString">#{searchCriteria.queryString}</query-param>
<view-id value="/pages/content.jsf"/>
</url-mapping>
それが機能する限り、(ページコードまたはBeanから)どの方法で達成されるかは問題ではないと思います。
事前にすべての助けをありがとう。