我有这个构成:
<!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中?
答案 0 :(得分:6)
请改用<h:link>
。 JSF将附加正确的上下文路径和FacesServlet
映射。
<h:link value="Register" outcome="/system/register" />
<h:link value="Login" outcome="/system/login" />