我试图允许用户在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>
Bean:
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)完成的方式并不重要。
提前感谢您提供的所有帮助。
答案 0 :(得分:1)
您在pretty-config中引用了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>