我发现了很多类似的问题,但没有一个解决方案适合我。
我有这个inputText字段,用户在其中输入文本,这个文本保存在我的bean中:
<h:inputText value="#{searchBean.param}"/>
然后点击此按钮,执行搜索算法,然后将用户重定向到结果页面,如下所示:
<h:commandButton value="Botao" action="#{searchBean.execute}"/>
执行方法:
public String execute() {
levenshtein(this.param);
return "results";
}
这会将用户转发到.... / results.xhtml,我需要这个链接是这样的:
... / results.xhtml?equation =“无论用户打算搜索什么”&amp; pagenumber =“当前页码”
当我点击此页面中的链接时,我被重定向到我的网站之外,对维基百科说,然后当我点击浏览器上的后退按钮时,我需要能够恢复我搜索的内容和我的页面。
我花了很多时间试图找出如何做到这一点,每次尝试都失败了,请帮帮我,谢谢。
答案 0 :(得分:2)
你想要一个GET表格。这很容易与<f:viewParam>
结合使用。
查看:
<f:metadata>
<f:viewParam id="query" name="query" value="#{searchBean.query}" />
<f:event type="preRenderView" listener="#{searchBean.execute}" />
</f:metadata>
...
<form>
<label for="query">Query</label>
<input type="text" name="query" value="#{param.query}" />
<input type="submit" value="Search" />
<h:message for="query" />
</form>
...
<h:dataTable value="#{searchBean.results}" var="result" rendered="#{not empty searchBean.results}">
...
</h:dataTable>
豆:
private String query;
private List<Result> results;
@EJB
private SearchService service;
public void execute() {
results = service.search(query);
}
// ...
注意:这会在同一页面中显示结果。另请注意,如果要添加分页链接/按钮,它们应该是正常的GET链接/按钮而不是POST(命令)链接/按钮。
答案 1 :(得分:0)
你想要GET parameters。 Web应用程序检索数据以供读取的常规方法是使用GET参数。不幸的是,JSF不容易支持这一点。 JSF2具有视图参数,JSF具有可行的等效hack。在devzone上有一篇关于这个主题的长篇文章:http://java.dzone.com/articles/bookmarkability-jsf-2