我有一个Spring 3.0应用程序,带有Web控制器方法.此方法通常在http响应中返回一个文件,因此我使用了返回类型org.springframework.http.HttpEntity.但现在有第二个要求:如果文件大于1MB并且在10点之后,则应显示HTML页面.
所以我的问题是,该方法有时应该返回a HttpEntity<byte[]>,有时候是a ModelAndView.但是如何才能拥有这两种不同类型的返回类型呢?
(好的是要求不是10点,它要复杂得多,但关键是,这种干扰只能在控制器中进行.)
(此应用程序使用经典JSPX呈现HTML页面.)
它太容易了(抱歉问题):可以用返回类型定义方法Object,因此可以返回ModelAndView或的实例HttpEntity.
这是有效的,因为AnnotationMethodHandlerAdapter#getModelAndView它将返回值作为a Object,然后具有if-then-else级联,其中包含大量inncstanceof语句以确定concreate实例类型.
如果有人觉得返回类型Object太常见,那么可以定义自己的类(复合类),包含一个ModelAndView或HttpEntity两个不同的字段.然后一个人必须写一个习惯ModelAndViewResolver.
这个自定义ModelAndViewResolver采取复合对象和
ModelAndView 或webRequest类似的AnnotationMethodHandlerAdapter#handleHttpEntityResponse做,然后返回null| 归档时间: |
|
| 查看次数: |
2386 次 |
| 最近记录: |