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

时间:2011-11-24 23:12:26

标签: jsf jsf-2 navigation

我有这个构成:

<!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>   

如果用户点击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)}/" />

它解决了我的问题,但如果我在某个链接中点击了bean,那么我会有一些ManageBean无效。

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

1 个答案:

答案 0 :(得分:6)

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

<h:link value="Register" outcome="/system/register" />
<h:link value="Login" outcome="/system/login" />

另见: