Как отобразить имя и версию браузера с помощью JSF 2.0? - PullRequest
6 голосов
/ 02 марта 2011

Мне просто нужно отобразить имя браузера и его версию на <h:outputText/> на домашней странице пользователя. Можем ли мы достичь этого с помощью JSF 2.0?


Мохарра 2.0.4 - Primefaces 2.2.1 - Glassfish v3

Ответы [ 2 ]

14 голосов
/ 30 января 2013

Поместите этот метод в ваш бин:

public String getBrowserName() {
    ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
    String userAgent = externalContext.getRequestHeaderMap().get("User-Agent");

    if(userAgent.contains("MSIE")){ 
        return "Internet Explorer";
    }
    if(userAgent.contains("Firefox")){ 
        return "Firefox";
    }
    if(userAgent.contains("Chrome")){ 
        return "Chrome";
    }
    if(userAgent.contains("Opera")){ 
        return "Opera";
    }
    if(userAgent.contains("Safari")){ 
        return "Safari";
    }
    return "Unknown";
}

А затем:

<h:outputText value="Browser: #{yourBean.browserName}" />
11 голосов
/ 02 марта 2011

Насколько я знаю, нет компонентов JSF, которые делают это с помощью одного тега или чего-то еще.Самое простое, что вы можете сделать, это просто отобразить необработанный заголовок HTTP User-Agent.

<h:outputText value="#{header['user-agent']}" />

Это только большая и уродливая строка, которая не всегда доступна каждому.

однако API, которые могут преобразовывать заголовок HTTP User-Agent в полезную информацию, такую ​​как точная версия / версия браузера и платформа / версия, например useragentstring.com .

После преобразования заголовка User-Agent в пригодные для использования части с помощью такого API вы должны иметь возможность отображать интересующие части в JSF с помощью управляемого компонента обычным способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...