2011-09-12 37 views

Trả lời

21

Như được mô tả trong tài liệu, BeanNameViewResolver giải quyết View s được khai báo là hạt. Thông thường bạn cần nó cho một số quan điểm mục đích đặc biệt.

Hãy tưởng tượng, ví dụ: một trong các bộ điều khiển của bạn sẽ hiển thị bảng tính Excel. Vì vậy, bạn phân lớp AbstractExcelView và thực hiện logic tùy chỉnh của bạn hiển thị một bảng tính dựa trên giá trị mô hình:

public class MyExcelView extends AbstractExcelView { ... } 

và tuyên bố nó như là một bean:

<bean id = "myExcelView" class = "MyExcelView" /> 

Sau đó tuyên bố một BeanNameViewResolver làm cho nó có sẵn để điều khiển: khi bộ điều khiển trả về ModelAndView với tên chế độ xem myExcelView, bảng tính của bạn sẽ được hiển thị.

BeanNameViewResolver thường được sử dụng kết hợp với một số phân giải xem khác để xử lý quan điểm "thường xuyên" (do đó nếu BeanNameViewResolver không thể tìm thấy một cái nhìn, resolver khác cố gắng để tìm thấy nó):

<bean class = "...BeanNameViewResolver"> 
    <property name = "order" value = "0" /> 
</bean> 

<bean class = "...InternalResourceViewResolver"> 
    <property name = "order" value = "1" /> 
    ... 
</bean> 
+0

+1 để được nhanh hơn tôi và có một số chi tiết blob của tôi không có :) –

+0

+1 cho lời giải thích tốt. Một vài câu hỏi: 1) beannameviewresolver có cần phải an toàn không? 2) là internalresourceviewresolver thread-safe? – shrini1000

+0

giải thích rất tốt – Krishna

7

Trên thực tế tài liệu không phải là tuyệt vời.

Trình giải quyết chế độ xem trong mvc mùa xuân là một bean dịch từ tên chế độ xem sang chế độ xem.

Tên chế độ xem là chuỗi đơn giản. Nó được trả về bởi phương thức handleRequest() của controller trong đối tượng ModelAndView.

ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) { 
    .... 
    return ModelAndView("thisIsTheViewName", ...); 
} 

Tên chế độ xem này được giải quyết cho chế độ xem thực tế.

BeanNameViewResolver có một công việc dễ dàng: Nó tìm kiếm một bean xem trong applicationContext có tên khung nhìn này làm id của nó.

<bean id="thisIsTheViewName" class="....MyView" /> 

Đối với các ứng dụng đơn giản, đây có thể là cách đơn giản nhất để dịch từ tên chế độ xem.

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