Check User-Agent with jsf

前端 未结 3 495
傲寒
傲寒 2020-12-19 18:25

I want to check the user agent of my client. (If it\'s possible the browser type/version)

But I don\'t know how do that...

Thank you for your help.

相关标签:
3条回答
  • 2020-12-19 18:47

    It is OK, I have find. I use :

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

    Thank you for your help.

    0 讨论(0)
  • 2020-12-19 18:59

    It is sent in the User-Agent http header.

    HttpServletRequest request = (HttpServletRequest)context.getExternalContext().getRequest();
    String userAgent = request.getHeader("user-agent");
    
    0 讨论(0)
  • 2020-12-19 19:00

    In a JSF2 page, you can print the user agent directly via the request object:

    <h:outputText value="#{request.getHeader('user-agent')}" />
    

    But don't forget to use the h-namespace ;-)

    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://java.sun.com/jsf/html">
    

    You can then respond via functions to different browsers.

    Example:

    <?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>
    
    0 讨论(0)
提交回复
热议问题