我试图允许用户将字符串输入到 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)并不重要。
感谢您提前提供的所有帮助。