Как создать ссылки относительно правильного контекста? - PullRequest
3 голосов
/ 25 ноября 2011

У меня есть такая композиция:

<!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)}/" />

Это решает мою проблему, но если у меня есть несколько экземпляров ManageBean, когда я щелкаю по какой-либо ссылке на компонент, он становится недействительным.

Как сохранить URL-путь на каждой странице ссылки и сохранить сеанс в управляемых компонентах?

1 Ответ

6 голосов
/ 25 ноября 2011

Используйте взамен <h:link>.JSF добавит правильный контекстный путь и отображение FacesServlet.

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

См. Также:

...