简单控制器& Tiles View Resolver =>它的工作原理
/**
* But with
* Spring4 RestController
*
*/
@RestController
public class Home {
@Autowired
private IManager<BaseObject> manager;
public void setManager(IManager<BaseObject> manager) {
this.manager = manager;
}
@RequestMapping(value = "/listprovider", method = RequestMethod.GET)
public String listProvider() {
return this.manager.getAllProvider(); // Message Converter To Json
// what about the view?
// what is the secret of view resolver in **Spring Rest**
}
}
但是使用RestController,渲染只是一个JSON而不是一个视图页面,我想呈现视图页面&amp; JSON数据。
class WeekFunc(Func):
"""
SQL function call for grouping by WEEK
"""
def as_mysql(self, compiler, connection):
self.function = 'WEEK'
return super(Week, self).as_sql(compiler, connection)
data = queryset.annotate(week=Week('start_time')) \
.values_list('week') \
.annotate(some_avg=Avg('field_1')) \
.order_by('week')
答案 0 :(得分:2)
@RestController是@Controller和@ResponseBody的组合。
使用@RestController时,响应会以Json格式隐式转换,无需显式声明@ResponseBody。
定义为仅发送定义格式的数据,并且无法使用它来检索任何视图。
如果要从@restcontroller检索页面,则需要使用ModelandView或 编写一个新的控制器并使用@Controller进行注释并返回视图名称,以便查找视图解析器并呈现相应的页面。
您需要在弹簧配置文件
中配置如下所示的视图解析器@Bean
public UrlBasedViewResolver urlBasedViewResolver()
{
UrlBasedViewResolver res = new InternalResourceViewResolver();
res.setViewClass(JstlView.class);
res.setPrefix("/WEB-INF/");
res.setSuffix(".jsp");
return res;
}
因此,当您从控制器返回页面名称时,查看解析程序会在WEB-INF文件夹中查找相应的jsp页面并返回视图。
以下链接供参考