2012-03-13 15 views
2

我想檢查我的客戶的用戶代理。 (如果可能的瀏覽器類型/版本)用jsf檢查用戶代理

但我不知道該怎麼辦......

謝謝您的幫助。

回答

4

這是確定的,我覺得。 我用:

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

5

它被髮送到User-Agent http標頭。

HttpServletRequest request = (HttpServletRequest)context.getExternalContext().getRequest(); 
String userAgent = request.getHeader("user-agent"); 
+0

好吧,謝謝你,但什麼是'context'?我如何初始化它? – Akabane 2012-03-14 08:19:10

5

在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