私はJSFが初めてです。アプリケーションは動作していますが、コントローラーを使用しているときにブラウザーのリンクと混同されます。ところで、私のアプリには PrimeFaces もあるので、p:タグに驚かないでください。コントローラーがそれらの間でリダイレクトを行う「リスト」ページと「表示」ページがあるとします。最初に私はhttp://localhost:8080/y/r/conversation/list.xhtmlページにいます。line で作成されたリンクがあります<p:commandLink action="#{lazyConversationBean.doShow(conv)}" ajax="false" value="View"/>。ここでは、lazyConversationBean がコントローラーとして機能します。方法があります:
public String doShow(Conversation c) {
this.setSelectedConversation(c);
return "view";
}
http://localhost:8080/y/r/conversation/list.xhtml正しいhttp://localhost:8080/y/r/conversation/view.xhtmlページであっても、そこから再び……にリダイレクトされました(ブラウザに表示されます)。そこにリンクがあり<p:commandButton action="#{lazyConversationBean.doList()}" ajax="false" value="Back to list"/>、コントローラーにはメソッドがあります:
public String doList() {
return "list";
}
そこからリダイレクトされました...ええ、あなたは正しいと思います... http://localhost:8080/y/r/conversation/view.xhtml(これもブラウザが表示するものです)それが正しいhttp://localhost:8080/y/r/conversation/list.xhtmlページであっても。
ブラウザのリンクエリアは、現在表示中のページよりも常に一歩遅れているように見えます。これについてGoogleにクエリを実行する方法がわからないため、これが誤った動作であるかどうかさえわかりません:D テストのために、この短いチュートリアルを実行しました。ここでは、netbeansがエンティティの1つでコードのスタック全体を作成し、動作は同じなので、PrimeFaces マジックとは関係ありません。
なぜそれが起こるのか、そしてそれを修正する方法を教えてもらえますか? ユーザーは正しいリンクをコピーするのが好きです ;)