用jsf检查用户代理
答
这是确定的,我觉得。 我用:
final HttpServletRequest request =(HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
final String userAgent = request.getHeader("user-agent");
System.out.println(userAgent);
谢谢你的帮忙。
答
它被发送到User-Agent
http标头。
HttpServletRequest request = (HttpServletRequest)context.getExternalContext().getRequest();
String userAgent = request.getHeader("user-agent");
+0
好吧,谢谢你,但什么是'context'?我如何初始化它? – Akabane 2012-03-14 08:19:10
答
在JSF2页面,您可以通过请求对象直接打印的用户代理:
<h:outputText value="#{request.getHeader('user-agent')}" />
但不要忘记使用H-命名空间 ;-)
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
然后,您可以通过功能对不同的浏览器进行响应。
例子:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:fn="http://java.sun.com/jsp/jstl/functions">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<p>
User-Agent: <h:outputText value="#{request.getHeader('user-agent')}" />
</p>
<h:panelGroup rendered="#{fn:containsIgnoreCase(request.getHeader('User-Agent'), 'Firefox')}">
<p>
Hello Firefox!
</p>
</h:panelGroup>
</h:body>
</html>
+7
'#{header ['user-agent']}'更简单。 – BalusC 2012-12-18 00:20:27
如果你接受了他的回答,ThiefMaster会很好。 :) – 2014-12-12 09:02:17