如何创建相对于正确上下文的链接?

Val*_*lva 3 navigation jsf jsf-2

我有这个构成:

<!DOCTYPE html>

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"> 


    <h:panelGroup rendered="#{empty userc.userb.user.id}">
        <h:panelGrid columns="2" >
            <h:outputLink value="system/register.xhtml">Register</h:outputLink>
            <h:outputLink value="system/login.xhtml">Login</h:outputLink>
        </h:panelGrid>
    </h:panelGroup>

</ui:composition>   
Run Code Online (Sandbox Code Playgroud)

如果用户在Login 页面中单击是重定向到的system/login.xhtml,这是正确的,但如果用户Login再次单击,则会重定向到system/system/login.xhtml.我知道这个解决方案,很久以前BalusC帮助了我:

<base href="#{fn:replace(request.requestURL, fn:substring(request.requestURI, 1, fn:length(request.requestURI)), request.contextPath)}/" />
Run Code Online (Sandbox Code Playgroud)

它解决了我的问题,但是当我点击一些链接时,我有一些ManageBean实例化它的bean无效.

如何保持每个链接页面中的url路径并将会话保留在托管bean中?

Bal*_*usC 6

<h:link>改用.JSF将附加正确的上下文路径和FacesServlet映射.

<h:link value="Register" outcome="/system/register" />
<h:link value="Login" outcome="/system/login" />
Run Code Online (Sandbox Code Playgroud)

也可以看看: