将inputText值作为url中的参数发送到下一页,并最终恢复

  • 本文关键字:一页 恢复 inputText url 参数 jsf
  • 更新时间 :
  • 英文 :


我发现了很多类似的问题,但没有一个解决方案对我有效。

我有一个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?等式="用户想要搜索的任何内容"&pagenumber="当前页码">

当我点击这个页面中的链接时,我会被重定向到我的网站之外,比如维基百科,然后当我点击浏览器上的后退按钮时,我需要能够恢复我搜索的内容和我所在的页面。

我花了很长时间试图找出如何做到这一点,但每次尝试都失败了,请帮帮我,谢谢。

您想要一个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>

Bean:

private String query;
private List<Result> results;
@EJB
private SearchService service;
public void execute() {
    results = service.search(query);
}
// ...

注意:这将在同一页中显示结果。还要注意,如果您想添加分页链接/按钮,它们应该是普通的GET链接/按钮而不是POST(命令(链接/按钮。

另请参阅:

  • 什么可以<f: 元数据>lt;f: viewParam>并且<f: viewAction>用于

您需要GET参数。web应用程序为读取目的检索数据的正常方式是使用GET参数。不幸的是,JSF并不容易支持这一点。JSF2有视图参数,JSF有一个可行的等价破解。devzone上有一篇关于这个主题的长文:http://java.dzone.com/articles/bookmarkability-jsf-2

相关内容

  • 没有找到相关文章

最新更新