如何使用JSF 2.0显示浏览器名称和版本?

Sel*_*vin 6 java jsf jsf-2

我只需要<h:outputText/>在用户主页上的a上显示浏览器名称及其版本.我们可以通过JSF 2.0实现这一目标吗?


Mojarra 2.0.4 - Primefaces 2.2.1- glassfish v3

And*_*esi 14

把这个方法放在你的bean中:

public String getBrowserName() {
    ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
    String userAgent = externalContext.getRequestHeaderMap().get("User-Agent");

    if(userAgent.contains("MSIE")){ 
        return "Internet Explorer";
    }
    if(userAgent.contains("Firefox")){ 
        return "Firefox";
    }
    if(userAgent.contains("Chrome")){ 
        return "Chrome";
    }
    if(userAgent.contains("Opera")){ 
        return "Opera";
    }
    if(userAgent.contains("Safari")){ 
        return "Safari";
    }
    return "Unknown";
}
Run Code Online (Sandbox Code Playgroud)

然后:

<h:outputText value="Browser: #{yourBean.browserName}" />
Run Code Online (Sandbox Code Playgroud)


Bal*_*usC 11

据我所知,没有JSF组件使用单个标签或其他东西来做到这一点.您最简单的方法就是显示原始HTTP User-Agent标头.

<h:outputText value="#{header['user-agent']}" />
Run Code Online (Sandbox Code Playgroud)

这只是一个庞大而丑陋的字符串,并不总是难以理解.

然而,有些API可以将HTTP User-Agent标头转换为可用的信息,例如确切的浏览器品牌/版本和平台品牌/版本,例如useragentstring.com.

User-Agent在使用这种API 将标题转换为可用部分之后,您必须能够通过常规方式在托管bean的帮助下显示JSF中感兴趣的部分.