2010-02-02 4 views
5

사용자 에이전트에 따라 내 Vaadin 응용 프로그램에 다른 테마를 설정하고 싶습니다. 특히, 적어도 모바일 장치 (iPhone, Android, ...)와 데스크톱 웹 브라우저를 구별하고 싶습니다.Vaadin의 클라이언트 브라우저 감지

만약 angel의 API는 두 가지 흥미로운 클래스 계시 :

BrowserInfo, 내 요구에 완벽하게 일을 할 것을하지만 get -method를 통해 인스 턴싱에 실패

SEVERE: javax.servlet.ServletException: ... 
Caused by: java.lang.UnsatisfiedLinkError: com.vaadin.terminal.gwt.client.BrowserInfo.getBrowserString()Ljava/lang/String; 

WebBrowser에 액세스 할 수있는 방법을 찾을 수 없습니다.

  1. 브라우저 구분을위한 올바른 방법을 선택 했습니까?
  2. BrowserInfo에 액세스하는 데 실패하는 이유는 무엇입니까?

답변

10

@quickanalysis가 지적했듯이 클라이언트/서버 측 구성 요소의 분리에 대해 알고 있어야합니다. 서버 측에 다음 코드를 사용자 에이전트 문자열을 얻기 위해

이 작업을 수행합니다 클라이언트 사이의 차이점에 저를 가리키며

ApplicationContext context = this.getContext(); 
if (context instanceof WebApplicationContext) { 
    String userAgent = ((WebApplicationContext)this.getContext()). 
getBrowser().getBrowserApplication(); 
} 
2

이 메서드를 호출하려고하는 클래스는 무엇입니까? BrowserInfo는 클라이언트 측에서 WebBrowser로 서버 측에서 사용할 수 있습니다. 패키지 이름 지정을 살펴보십시오.

+0

를/서버 구성 요소가있었습니다. 고마워! (+1) –