mùa xuân ứng dụng MVC của tôi có một ContentNegotiatingViewResolver đơn định nghĩa JsonView cho rendering resonses json:Chuyển tiếp đến một trang html tĩnh từ điều khiển
<mvc:annotation-driven/>
<context:component-scan base-package="world.domination.test"/>
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<map>
<entry key="json" value="application/json"/>
</map>
</property>
<property name="defaultViews">
<list>
<bean class="com.secondmarket.connector.springmvc.MappingJacksonJsonViewEx"/>
</list>
</property>
</bean>
Toàn bộ ứng dụng ngồi trên gốc url "myapp". Mọi thứ đều hoạt động như tôi cần.
Câu hỏi đầu tiên là: cách trả về trang tĩnh html khi truy cập url nhất định? Nói, khi truy cập vào Spring uri/myapp/test tôi muốn hiển thị một trang html /TestStuff.html nằm trong thư mục webapp gốc.
tôi đã đi trước và đã viết một bộ điều khiển đơn giản:
@Controller
@RequestMapping("test")
public class TestConnector {
@Autowired
private RestTemplate tpl;
@RequestMapping(method = RequestMethod.GET)
public String get() {
return "/TestStuff.html";
}
@RequestMapping(method = RequestMethod.POST)
public String post(@RequestParam("url") String url, @RequestParam("data") String data) {
return tpl.postForObject(url, data, String.class, new HashMap<String, Object>());
}
}
Các get() phương pháp có nghĩa vụ phải nói với Xuân để render một TestStuff.html, nhưng thay vào đó tôi nhận được một lỗi nói rằng quan điểm với tên "/TestStuff.html" bị thiếu.
Câu hỏi thứ hai thứ hai là cách tránh sự cần thiết phải đặt tiện ích mở rộng cho URL. Trong ví dụ của tôi, khi tôi sử dụng /myapp/test thay vì /myapp/test.html ContentNegotiatingViewResolver tôi sử dụng một cái nhìn json mà ám {} (dấu ngoặc nhọn trống)
Bất kỳ con trỏ được đánh giá cao.
Từ cấu hình của bạn 'ContentNegotiatingViewResolver' Tôi không thể hiểu bạn đang cố gắng đạt được điều gì. Trình phân giải này được áp dụng khi cùng một tài nguyên có thể được hiển thị trong các biểu diễn khác nhau. Nếu một số tài nguyên được hiển thị bằng JSON, trong khi một số tài nguyên khác là HTML thì cần phải có một cấu hình khác của trình phân giải. – axtavt