1

我试图允许用户将字符串输入到 inputText 组件中,然后通过按 Enter 或单击按钮/链接将输入的字符串作为名为“queryString”的参数传递到另一个页面。

我正在使用 Prime 面孔和漂亮面孔。

我尝试了几种不同的方法。从 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

1

你在你的漂亮配置中引用了一个 searchCriteria bean。您可以将它用于您的 p:inputText 值(反之亦然)吗?漂亮的面孔应该选择查询参数。

<p:inputText 
    id="queryStringInput"
    name="queryStringInput"
    value="#{searchCriteria.queryString}" />

<p:commandLink
    id="submitQuery"
    value="Search"
    type="submit"
    action="pretty:content">
</p:commandLink>            
于 2013-11-12T16:31:26.767 回答