用jsf检查用户代理

问题描述:

我想检查我的客户的用户代理。 (如果可能的浏览器类型/版本)用jsf检查用户代理

但我不知道该怎么办......

谢谢您的帮助。

这是确定的,我觉得。 我用:

final HttpServletRequest request =(HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest(); 
final String userAgent = request.getHeader("user-agent"); 
System.out.println(userAgent); 

谢谢你的帮忙。

+0

如果你接受了他的回答,ThiefMaster会很好。 :) – 2014-12-12 09:02:17

它被发送到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