是否有类似<c:url>的JSF?</c:url>

时间:2011-10-11 18:09:55

标签: java jsf jsf-2

JSF中是否有一个taglib,用于在我想要的任何URL中插入正确的应用程序上下文根,就像JSP中的<c:url>标记一样?

1 个答案:

答案 0 :(得分:7)

不完全是这样,但所有引用URL资源的JSF组件都已经自动包含正确的上下文路径,最终也包含FacesServlet映射。例如<h:link>

<h:link value="Link to other page" outcome="otherpage" />

会呈现类似的内容(假设您的上下文路径为/contextnameFacesServlet已映射到*.xhtml):

<a href="/contextname/otherpage.xhtml">Link to other page</a>

您可以按<f:param>包含请求参数:

<h:link value="Link to other page" outcome="otherpage">
    <f:param name="foo" value="#{bean.foo}" />
</h:link>

呈现如下内容:

<a href="/contextname/otherpage.xhtml?foo=bar">Link to other page</a>

其他链接组件也分别是CSS,JS和图片的<h:outputStylesheet><h:outputScript><h:graphicImage>

<h:outputStylesheet library="default" name="css/foo.css" />
<h:outputScript library="default" name="js/foo.js" />
<h:graphicImage library="default" name="images/foo.png" />

呈现如下内容:

<link rel="stylesheet" type="text/css" href="/contextname/javax.faces.resource/css/foo.css.xhtml?ln=default" />
<script type="text/javascript" src="/contextname/javax.faces.resource/js/foo.js.xhtml?ln=default"></script>
<img src="/contextname/javax.faces.resource/images/foo.png.xhtml?ln=default" />