2011-12-26 11 views

risposta

9

Si può leggere user-agent colpo di testa da request per ottenere dettaglio sul browser

((HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest()).getHeaders(); 
+0

Funzionerà? String bid = (HttpServletRequest) FacesContext.getCurrentInstance(). GetExternalContext(). GetRequest(). GetHeaders(); In Netbeans 7.1 mi dà errore: impossibile trovare il simbolo: metodo getHeaders() –

+0

Un'ultima cosa. Sto cercando un modo per visualizzare il numero di serie del browser del client in JSF? È possibile? –

+0

Il 'getRequest()' deve essere lanciato, non il 'getHeader()'. – BalusC

20

del user agent string è disponibile come richiesta HTTP intestazione con il nome User-Agent browser. Le intestazioni di richiesta sono disponibili JSF ExternalContext#getRequestHeaderMap():

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

Non c'è bisogno di trasportare l'API Servlet prima da sotto le cappe JSF. Guarda sempre javadoc su ExternalContext per prima cosa ogni volta che devi avere accesso alla richiesta o alla risposta del servlet HTTP.

Ricordare che le intestazioni delle richieste (come tutto il resto in una richiesta HTTP) sono completamente controllabili da da parte dell'utente finale. Quindi non dare mai per scontato che le informazioni siano corrette e valide. Usalo solo per le statistiche. Se è necessario eseguire il rilevamento delle funzioni, preferisco fortemente i linguaggi lato client come JavaScript e/o CSS, se possibile. Possono farlo in modo molto più affidabile.

Problemi correlati