使用jsf检查User-Agent

Aka*_*ane 3 jsf user-agent

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

但我不知道那是怎么回事......

谢谢您的帮助.

Aka*_*ane 7

没关系,我找到了.我用 :

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

谢谢您的帮助.


Thi*_*ter 6

它在User-Agenthttp标头中发送.

HttpServletRequest request = (HttpServletRequest)context.getExternalContext().getRequest();
String userAgent = request.getHeader("user-agent");
Run Code Online (Sandbox Code Playgroud)


Ben*_*uer 5

在JSF2页面中,您可以通过请求对象直接打印用户代理:

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

但是别忘了使用h-namespace ;-)

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html">
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过功能响应不同的浏览器.

例:

<?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>
Run Code Online (Sandbox Code Playgroud)

  • `#{header ['user-agent']}`更简单. (9认同)