我只需要在用户主页的<h:outputText/>
上显示浏览器名称及其版本。我们可以通过JSF 2.0实现这一目标吗?
Mojarra 2.0.4 - Primefaces 2.2.1- glassfish v3
答案 0 :(得分: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";
}
然后:
<h:outputText value="Browser: #{yourBean.browserName}" />
答案 1 :(得分:11)
据我所知,没有JSF组件使用单个标签或其他东西来做这件事。最简单的方法就是显示原始HTTP User-Agent
标题。
<h:outputText value="#{header['user-agent']}" />
这只是一个庞大而丑陋的字符串,并不总是让每个人都能辨认出来。
然而,有些API可以将HTTP User-Agent
标头转换为可用的信息,例如确切的浏览器品牌/版本和平台品牌/版本,例如useragentstring.com。
在借助这样的API将User-Agent
标题转换为可用部分之后,您必须能够通过常规方式在托管bean的帮助下显示JSF中感兴趣的部分。