Java 命令按钮,如何重定向到外部站点?(JSF2)

Java 命令按钮,如何重定向到外部站点?(JSF2),java,jsf,jakarta-ee,jsf-2,java-ee-6,Java,Jsf,Jakarta Ee,Jsf 2,Java Ee 6,当我使用命令按钮重定向到页面时,在我的项目中,你只需要给出页面的名称,不带扩展名,然后在action属性中加上?faces redirect=true,我就会被重定向 但是如果我想重定向到外部页面(例如:www.google.com),该怎么办 我试过很多方法: www.google.com,google.com 但我失败了 这就是我所做的: <h:form> <h:commandButton action="#{mai

当我使用命令按钮重定向到页面时,在我的项目中,你只需要给出页面的名称,不带扩展名,然后在action属性中加上?faces redirect=true,我就会被重定向

但是如果我想重定向到外部页面(例如:www.google.com),该怎么办

我试过很多方法:

www.google.com,google.com

但我失败了

这就是我所做的:

<h:form>
            <h:commandButton 
                action="#{mainPageBB.goToLink}" value="#{msgs.clickhere}"/>
        </h:form>
注意:retrieveLink()返回的值始终是www.google.com(100%确定)

我在控制台中没有任何错误,页面只是刷新。另外,我确信第一个if子句验证为true,因此我认为没有理由跳转到返回null

更新

我尝试使用外部上下文,但得到了404,因为它将当前url附加到链接字符串:

public String goToRandomLink() {        
        String link = linkManagerEJB.retrieveRandomLink();
        if(link != null) {      
            ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
            try {
                externalContext.redirect(link.trim());
            } catch (IOException e) {               
                e.printStackTrace();
            }           
        }
        return null;
    }
使用

如果你知道这个链接已经存在,那就用它吧


您可以使用type=“button”在链接标记“a”之间创建输入。 大概是这样的:

<a href="http://www.google.com">
    <input type="button" value="Button text" />
</a>


我想我很接近了,当我这样做的时候,链接字符串被附加到我的项目URL中,所以我得到了一个404错误,因为我试图重定向到:是的。我们没有返回URL,而是返回视图名称。请看Balusc。我知道链接的唯一原因是我将www.google.com的值放在了数据库中,但将来我不知道目的地是什么。所以我需要找到方法让commandbutton重定向到保存在链接变量中的falue我刚看了你给我的链接,我知道,但我的问题是我的目标是从数据库中检索到的未知外部url(在我项目的某个文件夹中没有)。我不确定我是否需要外部环境,我有点困惑。是的,我知道这个链接只是为了理解
return
如何从动作中工作。我的答案正文中提到的
ExternalContext.redirect()
内容清楚地提到了您问题的答案
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
externalContext.redirect(link.trim());
<a href="http://www.google.com">
    <input type="button" value="Button text" />
</a>