CommandLink操作重定向到外部URL无法正常工作

时间:2012-09-11 20:19:48

标签: jsf-2

我正在使用jsf 2.我在facelet文件中有一个指向外部URL的链接。我当前的视图是/app1/home.xhtml,其中h: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中找不到作为资源

如何才能正确重定向?

1 个答案:

答案 0 :(得分: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>