我正在用 spring mvc 做一些练习编程,我决定做一个关于内容协商的例子。
我从 uri "/products" 开始:
- 当我询问 /products.json 时,它会返回 json,我对此感到高兴
- 当我要求 /products.xml 它返回正确的 xml 时,我再次对此感到高兴
- 当我要求 html 视图 (/products) 时,目前我只为产品显示一个简单的 html 表,但是如果我想为 html 页面包含额外的动态内容,如标签云或类似产品(不相关的东西到产品)?
下面是我的控制器方法代码。
@RequestMapping(method = RequestMethod.GET)
public ModelAndView getAllProducts(){
ModelAndView result = new ModelAndView("index");
GenericListElementWrapper<Product> products = new GenericListElementWrapper<Product>();
products.setList(productDao.getAll());
ModelMap modelMap = new ModelMap();
modelMap.addAttribute("products",products);
result.addAllObjects(modelMap);
return result;
}
我想要达到的目标如下:
- 一种保留我的单一控制器方法但 html 视图会有额外内容的方法
我的想法是:
也许使用 servlet 过滤器来丰富 ModelAndView 仅针对 text/html mimetype?但是,您正在为所有可能不受欢迎的 html 请求执行此操作?
目前我解释自己的方式感觉就像我想要一个完全渲染的 html 视图发送给客户端。也许我看错了这个问题,我应该考虑在通过 javascript 加载页面后检索额外内容的思路?
那么有可能实现我想要的解决方案吗?另一部分是我的预期解决方案在实践中是否真正可取:P