一尘不染

h:outputLink将上下文路径添加到URL值的前缀

tomcat

我有一个h:outputLink如下图所示:

<h:outputLink value="#{doc.value}" style="color:blue">#{doc.key}</h:outputLink>

该值为URL
www.example.com。当我单击该值时,在地址栏中看到的URL是http://localhost:8080/Project/www.example.com。为什么上下文路径以URL为前缀?

我查找了生成的HTML,但该值是没有上下文路径的实际URL。我<a>在JSF中尝试过,但没有区别。

任何帮助解决此问题的方法将不胜感激。谢谢!


阅读 360

收藏
2020-06-16

共1个答案

一尘不染

<h:outputLink /> 如果value字段是相对路径,则将其值附加到当前的父路径(不是Servlet Context)
。这意味着如果您在以下位置具有此特定链接http://localhost:8080/Project/users.xhtml

<h:outputLink value="sales.xhtml">
    Sales
</h:outputLink>

这将尝试将您重定向到http://localhost:8080/Project/sales.xhtml

好吧,当您指定一个相对的地址时,JSF理解它必须将其附加到当前的父URL上。为了避免这种情况,请编写绝对网址:

public String getValue(){
    return "http://www.example.com";
}



<h:outputLink value="#{doc.value}">
    Custom external url
</h:outputLink>
2020-06-16