我只需要在用户主页上的<h:outputText/>
上显示浏览器名称及其版本。我们可以通过JSF 2.0来实现吗?如何使用JSF 2.0显示浏览器名称和版本?
钻嘴鱼科2.0.4 - Primefaces 2.2.1- GlassFish的第三版
我只需要在用户主页上的<h:outputText/>
上显示浏览器名称及其版本。我们可以通过JSF 2.0来实现吗?如何使用JSF 2.0显示浏览器名称和版本?
钻嘴鱼科2.0.4 - Primefaces 2.2.1- GlassFish的第三版
据有,因为我知道这是否与一个标签或某事没有JSF组件。最简单的方法是显示原始HTTP User-Agent
标题。
<h:outputText value="#{header['user-agent']}" />
这只是一个庞大而丑陋的字符串,并不总是可以被所有人破译。
然而,有一些API可以将HTTP标头转换为可用信息,例如确切的浏览器版本和平台版本,例如useragentstring.com。
一旦在这种API的帮助下将User-Agent
标题转换为可用部分,您必须能够以通常的方式借助托管bean显示JSF中感兴趣的部分。
将这个方法在你的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}" />
使用Internet Explorer则返回 “未知”,为什么呢? – 2018-01-26 11:50:27
@LizLamperouge您可以打印userAgent变量并添加另一个“if contains”块。 – 2018-02-28 15:07:39
谢谢@AndrésCanavesi,“你可以打印userAgent变量并添加另一个”if contains“block”,但是用什么? – 2018-03-05 09:46:50
非常感谢@BalusC – Selvin 2011-03-04 04:24:36