【问题标题】:Pass inputField values as queryString to another page in JSF将 inputField 值作为 queryString 传递到 JSF 中的另一个页面
【发布时间】:2013-11-21 02:43:05
【问题描述】:

我试图允许用户将字符串输入到 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);

}   

我似乎无法让它按我想要的方式工作。这是漂亮配置中的 sn-p:

<url-mapping id="content">
    <pattern value="/content"/>
    <query-param name="queryString">#{searchCriteria.queryString}</query-param>
    <view-id value="/pages/content.jsf"/>
</url-mapping>

我不认为它以哪种方式完成(从页面代码或 bean)只要它有效。

感谢您提前提供的所有帮助。

【问题讨论】:

    标签: jsf primefaces prettyfaces


    【解决方案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>            
    

    【讨论】:

      猜你喜欢
      • 2012-10-15
      • 1970-01-01
      • 2016-01-24
      • 2017-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多