3

我正在使用 jsf 2。我在 facelet 文件中有一个指向外部 url 的链接。我当前的视图是 /app1/home.xhtml 与 ah:commandLink 有这样的动作

<h:commandLink value="#{link}" action="#{action.redirect}" target="_blank"/>

action.redirect 重定向到的 url 是 /app2/info.do。然而,JSF 似乎试图将 url 的扩展名更改为 .xhtml。然后失败并显示错误消息。

com.sun.faces.context.FacesFileNotFoundException:/app2/info.xhtml 在 ExternalContext 中找不到作为资源

我如何让它正确重定向?

4

1 回答 1

6

不要在<h:commandLink>这里使用,这是错误的标签。它旨在提交 JSF POST 表单并导航到 JSF 视图,您显然不希望在此特定用例中发生这两种情况。

只需使用<h:outputLink>甚至纯 HTML <a>。所以,

<h:outputLink value="#{action.redirect}" target="_blank">#{link}</h:outputLink>

或者

<a href="#{action.redirect}" target="_blank">#{link}</a>

请注意,这两种方法都不需要<h:form>

于 2012-09-11T20:26:40.517 回答