1

ユーザーが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から)どの方法で達成されるかは問題ではないと思います。

事前にすべての助けをありがとう。

4

1 に答える 1