2016-05-31 1 views
0

Vaadin 7.6 및 Spring Boot를 사용하여 프로젝트 코드를 작성하려고합니다. 이미지 페이지에 이미지를 표시하고 싶습니다. 이를 위해 내가 찾은 바디 언의 책을 읽었습니다.Vaadin 7.6 및 Spring 부트 프로젝트에서 이미지 읽기

// Find the application directory 
String basepath = VaadinService.getCurrent() 
          .getBaseDirectory().getAbsolutePath(); 
// Image as a file resource 
FileResource resource = new FileResource(new File(basepath + "/WEB-INF/images/image.png")); 
// Show the image in the application 
Image image = new Image("Image from file", resource); 

그러나 문제가 있습니다. 스프링 부트에서는 WEB-INF 폴더가 없습니다. 나는 그 폴더있어 :

  • 자원
  • 자원/정적
  • 자원/템플릿 내가 디렉토리 resources/static/images을 만든

을 나는 이미지를 저장 한.

String basePath = VaadinService.getCurrent().getBaseDirectory().getAbsolutePath(); 
FileResource resource = new FileResource(new File(basePath + "/images/telecaster.jpg")); 
Image telecaster = new Image("Telecaster", resource); 

하지만 엄마 페이지를하려고 할 때 예외를 가지고 : 후, 나는 그와 같은 코드를 시도했습니다 java.io.FileNotFoundException :/개인의/var/폴더/나노/kv40tr650llcmk6rssnxzt900000gn/T/tomcat-docbase.5908407388863057264.8080/images/telecaster.jpg (해당 파일 또는 디렉토리 없음). http://localhost:8080/images/telecaster.jpg URL을 사용하면 이미지가 표시되기 때문에 이미지가 잘 배치됩니다.

내 Vaadin 소스 코드에서 이미지 (및 모든 파일 형식)에 액세스하려면 어떻게해야합니까?

답변

0

해결책을 찾았습니다. 디렉토리 src/main/WEB-INF/images을 만들고 폴더 WEB-INF를 자원 폴더로 정의합니다.

String imagePath = IdeaxBoxUI.class.getClassLoader().getResource("images/telecaster.jpg").getPath(); 
    FileResource resource = new FileResource(new File(imagePath)); 
    Image telecaster = new Image("Telecaster", resource); 
+0

당신이 다른 대답의 제안을 시도해 봤어 : 후

, 나는 자원에 대한 고전적인 코드를 작성? 왜냐하면 ThemeResource가 선호되는 방법이기 때문입니다. –

2

또는 ThemeResource 클래스를 통해 이미지를로드 할 수 있습니다. 클래스는 기본적으로 표준 VAADIN/themes/{themeName} 디렉토리에서 자원을 찾습니다. 다음은 코드 예입니다.

new ThemeResource("images/admin-user.jpg") 

images는 VAADIN/themes/{themeName} 디렉토리 아래의 디렉토리입니다.

관련 문제