私は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 マジックとは関係ありません。
なぜそれが起こるのか、そしてそれを修正する方法を教えてもらえますか? ユーザーは正しいリンクをコピーするのが好きです ;)