1

同様の質問がたくさん見つかりましたが、解決策はどれもうまくいきませんでした。

ユーザーがテキストを入力するこの 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="ユーザーが検索しようとしたもの"&pagenumber="現在のページ番号"

このページのリンクをクリックすると、自分のサイトの外、たとえばウィキペディアにリダイレクトされます。ブラウザの戻るボタンをクリックすると、検索した内容とページを復元できる必要があります。だった。

これを行う方法を見つけるのにかなりの時間を費やしましたが、すべての試みが失敗しました。助けてください、ありがとう。

4

2 に答える 2

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);
}

// ...

注: これにより、同じページに結果が表示されます。また、ページング リンク/ボタンを追加する場合は、POST (コマンド) リンク/ボタンではなく、通常の GET リンク/ボタンである必要があることに注意してください。

以下も参照してください。

于 2013-02-26T11:45:41.487 に答える
0

GET パラメータが必要です。Web アプリケーションが読み取り目的でデータを取得する通常の方法は、GET パラメーターを使用することです。残念ながら、JSF はこれを簡単にはサポートしません。JSF2 にはビュー パラメータがあり、JSF には実行可能な同等のハックがあります。このトピックに関する長い記事が devzone にあります: http://java.dzone.com/articles/bookmarkability-jsf-2

于 2013-02-25T22:41:56.893 に答える