2014-09-04 14 views

Trả lời

9

Đầu tiên, tạo một thư mục chủ đề:/WebContent/VAADIN/themes/mynewtheme

Sau đó, đặt favicon.ico tùy chỉnh của bạn trong thư mục này. Bạn cũng cần phải thiết lập thuộc tính chủ đề trong ứng dụng của bạn:

public class MyNewApplication extends Application { 

    @Override 
    public void init() { 
     ... 
     ... 
     setTheme("mynewtheme"); 
    } 
} 
+1

Vaadin 7: @Theme ("mynewtheme") public class MyUI mở rộng giao diện người dùng {... – Krayo

+0

Nếu tên biểu tượng của tôi là ** custom.ico ** thay vì ** favicon .ico **, nó có hoạt động không? – Cataclysm

+2

Rất lạ ... Tôi có chú thích @Theme ("mytheme") trên lớp UI nhưng tôi phải gọi setTheme ("mytheme") ONCE để thay đổi favicon ... – shinchillahh

4

Trong trường hợp của tên biểu tượng tùy chỉnh (Vaadin 7):

public class MyServlet extends VaadinServlet implements SessionInitListener { 

    @Override 
    protected void servletInitialized() throws ServletException { 
     super.servletInitialized(); 
     getService().addSessionInitListener(this); 
    } 

    @Override 
    public void sessionInit(SessionInitEvent event) throws ServiceException { 
     event.getSession().addBootstrapListener(new BootstrapListener() { 

      @Override 
      public void modifyBootstrapPage(BootstrapPageResponse response) { 
       response.getDocument().head() 
        .getElementsByAttributeValue("rel", "shortcut icon") 
        .attr("href", "./VAADIN/themes/mynewtheme/custom.ico"); 
       response.getDocument().head() 
        .getElementsByAttributeValue("rel", "icon") 
        .attr("href", "./VAADIN/themes/mynewtheme/custom.ico"); 
      } 

      @Override 
      public void modifyBootstrapFragment(BootstrapFragmentResponse response) { 
      } 

     }); 
    } 

} 

EDIT

Nó là tốt hơn để sử dụng BootstrapListener dưới dạng lớp lồng nhau tĩnh: link

+0

Tôi đánh giá cao câu trả lời này, NHƯNG: Tôi đã áp dụng điều này cho dự án của tôi với '.../favicon.png") attr ("type", "image/png"); 'và không có gì được hiển thị dưới dạng favicon trong tab của trình duyệt của tôi. Nếu tôi tắt/nhận xét ứng dụng mới được áp dụng Biểu tượng mặc định của Vaadin được hiển thị lâu hơn nữa (v7.5.0.rc1) –

+0

Vâng, điều đó thật thú vị.Tôi vừa phát hiện ra rằng favicon chính xác được hiển thị trong Lịch sử của FF Nó chỉ/vẫn không được hiển thị trong tab của trang. –

+1

@GeroldBroser Một số trình duyệt hiển thị favicon trong một tab, một số trình duyệt không hiển thị một số trong thanh địa chỉ URL, một số hiển thị trong menu bookmark, một số thì không. –

6

Đây là phiên bản chi tiết hơn của similar Answer được đăng bởi Greg Ballot. Câu trả lời của tôi ở đây liên quan đến Vaadin 7, hiện tại là 7.5.3.

Tuỳ chỉnh Theme

Trong Vaadin 7.5, bạn có thể thả tập tin hình ảnh đồ họa favicon của bạn vào your own custom theme. Nếu sử dụng plugin Vaadin cho nhiều khác nhau IDEs (NetBeans, Eclipse) hoặc Maven archetypes, chủ đề tùy chỉnh có tên mytheme lẽ ra phải được tạo cho bạn. Thả tệp hình ảnh của bạn vào thư mục mytheme đó.

Phần chính của ứng dụng Vaadin 7, lớp con của bạn là UI, phải chỉ định rằng nó sử dụng chủ đề tùy chỉnh của bạn. Một lần nữa, nếu sử dụng các trình cắm thêm IDE và/hoặc nguyên mẫu Maven, điều này đã được cấu hình cho bạn. Cách dễ nhất là một chú thích Java trên lớp con UI.

@Theme ("mytheme") // Tell Vaadin to apply your custom theme, usually a subclass of the Valo or Reindeer theme. 
@Title ("PowerWrangler") // Statically specify the title to appear in web browser window/tab. 
@SuppressWarnings ("serial") // If not serializing such as "sticky sessions" and such, disable compiler warnings about serialization. 
@Push (PushMode.AUTOMATIC) // If using Push technology. 
public class MyVaadinUI extends UI 
{ 
… 

Favicon CÁCH DÙNG/Behavior Không Chuẩn

Nên nhớ rằng hành vi favicon không được chuẩn hóa. Favicons phát triển một cách bất ngờ, chủ yếu là ngoài cảm giác vui vẻ. Hành vi chính xác phụ thuộc vào trình duyệt cụ thể và máy chủ cụ thể. Khác với vị trí thư mục cụ thể, không ai trong số này đặc biệt đối với Vaadin.

Định dạng tệp hình ảnh

Ban đầu ICO file format chỉ được sử dụng riêng. Kể từ đó, hầu hết các trình duyệt đã phát triển để chấp nhận bất kỳ định dạng nào trong số đó bao gồm JPEG, TIFFPNG.

Kích thước/độ phân giải hình ảnh

Biểu tượng favicon ban đầu được dự định là biểu tượng bitmap rất nhỏ. Một số trình duyệt đã sử dụng các hình đại diện khác nhau trong các tình huống mà bạn có thể muốn cung cấp hình ảnh có độ phân giải cao hơn. Nhưng hãy nhớ rằng các tệp nhỏ hơn tải nhanh hơn mà không cần giữ cho người dùng của bạn chờ đợi.

Favicon File Name

Một số trình duyệt hoặc máy chủ có thể xử lý tên tập tin khác hoặc các phần mở rộng tên, nhưng tôi đã tìm thấy nó dễ dàng nhất để đặt tên cho tập tin của tôi chính xác favicon.ico - thậm chí nếu sử dụng một định dạng khác nhau!Tôi thường sử dụng một tập tin PNG nhưng đặt tên nó với phần mở rộng .ico. Mặc dù tôi không thể đảm bảo thực hành này hoạt động trên mọi máy chủ và trình duyệt nhưng tôi không gặp phải bất kỳ sự cố nào.

hiện Favicon file

các phiên bản gần đây của Vaadin đã bao gồm một biểu tượng Vaadin liên quan trong một file favicon.ico trong một dự án được cấu hình. Vì vậy, bạn phải thay thế tệp đó bằng tệp của riêng bạn. Trong Vaadin 7.5.3 file chứa bốn kích cỡ, lớn nhất tìm kiếm như thế này:

Vaadin logo favicon provided by default in a configured project

Cũ hơn phiên bản không thêm một tập tin, vì vậy bạn thả trong của riêng bạn.

Ảnh chụp màn hình IDE

Dưới đây là một cặp ảnh chụp màn hình. Một là khung nhìn dự án (lôgíc) trong NetBeans 8, trong khi cái kia là dạng xem (vật lý).

Project view of a favicon’s location, using NetBeans 8

File system view of a favicon’s location, using NetBeans 8

Các vấn đề liên quan