【问题标题】:How to create links relative to the right context?如何创建相对于正确上下文的链接?
【发布时间】:2011-11-24 23:12:25
【问题描述】:

我有这样的作文:

<!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 实例化,则该 bean 无效。

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

【问题讨论】:

  • 我发布了一个答案,但只是好奇,我不明白你的问题是 bean “无效”。究竟会发生什么?会话真的失效并重新创建了吗?

标签: jsf jsf-2 navigation


【解决方案1】:

请改用&lt;h:link&gt;。 JSF 将附加正确的上下文路径和FacesServlet 映射。

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

另见:

【讨论】:

  • 好朋友!谢谢! =] 只是一个观察,我的 .xhtml 怎么不在同一个文件夹中,我应该在前面加上一个斜杠,就像这样: 谢谢!
猜你喜欢
  • 2018-03-03
  • 1970-01-01
  • 1970-01-01
  • 2012-07-29
  • 1970-01-01
  • 1970-01-01
  • 2011-01-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多