私は JSF と Primefaces を初めて使用し、ログインと基本的なナビゲーションの作業を始めたばかりで、すでに問題に遭遇しています。私はSOで約10の同様の質問をしましたが、解決策はまだありませんでした.
ログイン: ログアウトと同様に問題なく動作するようですが、ブラウザの URL には、ログイン後もログイン画面にいると表示され、Oracle EE6 ドキュメントから直接ログイン例を使用したため、心配です。ログイン方法は以下の通りです。
public String login(){ FacesContext context = FacesContext.getCurrentInstance(); HttpServletRequest request = (HttpServletRequest)context.getExternalContext().getRequest(); try{ logger.log(Level.FINE, "User credentials: name: {0}, password: {1}", new Object[] {this.username, this.password}); request.login(this.username, encrypt(this.password)); logger.log(Level.FINE, "User: {0} logged in", this.username); }catch(ServletException e){ logger.log(Level.SEVERE, "User: {0} login failed, password: {1}", new Object[]{this.username, encrypt(this.password)}); context.addMessage(null, new FacesMessage("Login Failed!")); return "error"; } return "/faces/system/index";
}
ログインすると、正しいディレクトリの正しいページに移動し、すべてが正しく表示されますが、リンクにカーソルを合わせると、ブラウザーの下部にあるステータス バーに 3 つのリンクすべてに対して同じ URL が表示されます。以下に示すページのコード。
<h:body> <p:layout fullPage="true"> <f:facet name="last"> <h:outputStylesheet library="css" name="discovery.css"></h:outputStylesheet> </f:facet> <p:layoutUnit styleClass="headerDiv" position="north" size="100"> <h:graphicImage library="images" name="header.jpg"></h:graphicImage> </p:layoutUnit> <p:layoutUnit styleClass="navDiv" position="west" size="200" id="navPanel"> <h:form> <h:outputText value="Navigation Menu"></h:outputText> <br/> <p:commandLink value="First Time Users" update=":main"> <f:setPropertyActionListener target="#{navigationBean.pageToDisplay}" value="tutorial.xhtml"></f:setPropertyActionListener> </p:commandLink> <br/> <p:commandLink value="Help" update=":main"> <f:setPropertyActionListener target="#{navigationBean.pageToDisplay}" value="help.xhtml"></f:setPropertyActionListener> </p:commandLink> <br/> <h:commandLink action="#{loginBean.logout()}" value="Log Out"></h:commandLink> </h:form> </p:layoutUnit> <p:layoutUnit position="center" id="main"> <ui:include src="#{navigationBean.pageToDisplay}"></ui:include> </p:layoutUnit> </p:layout> </h:body>
ナビゲーション Bean
@Named(value = "navigationBean") @RequestScoped public class NavigationBean は Serializable {
public NavigationBean() { }
public String getPageToDisplay() { return pageToDisplay; }
public void setPageToDisplay(String pageToDisplay) { this.pageToDisplay = pageToDisplay; }
private String pageToDisplay = "welcome.xhtml"; }
ナビゲーション Bean に設定されたデフォルト ページにログインした後にページが読み込まれると、ログアウト リンク以外のリンクをクリックすると、中央のレイアウト ユニットからデフォルト ページが消えて空白のページが表示される / ログをクリックするただし、リンクをアウトすると、意図したとおりにログアウトされます。どんな助けでも大歓迎です。