JAX-RS实现Jersey通过Viewable类支持MVC样式的Web应用程序,Viewable类是模板名称和模型对象的容器。它的使用方式如下:
{{1}}
这是从Viewable发送json的正确方法吗?有没有办法明确设置json对象?
答案 0 :(得分:0)
一些事情:我没有任何特别使用Viewable
的经验,但我熟悉JAX-RS,可能会按照你的方式提出几点指示。
JAX-RS定义了将异常映射到响应的功能。此功能非常适合从资源代码中删除这些异常块。查看有关如何注册这些主题的教程的Jersey docs。快速摘要是:1)实现ExceptionMapper
和2)将类注册为提供者。
对于初学者,我建议创建一个映射到公共HTTP codes的简单套件。例如:
NotFoundException
- 返回404响应,在请求单个实体但未找到时使用。InvalidInputException
- 返回422响应,在请求未通过验证时使用(例如尝试在电子邮件字段中保存电话号码)。BadRequestException
- 通常框架会为您处理这些情况,但如果没有,则错误请求是一个格式不正确的请求。因此,如果缺少必需的标头,或者当仅允许单个实体时客户端尝试保存集合。Exception
* - 这里有一颗星,因为意外的异常通常是由于服务器错误造成的,所以500是一个合适的默认响应。 可能想要创建全局未捕获异常处理程序的原因是为了防止在响应正文中返回堆栈跟踪。出于安全原因,这可能很糟糕。 如果您使用@Template
对象,则不需要Viewable
注释。此外,Viewable
期望模板作为第一个参数,模型(map)作为第二个参数。该模型应具有与JSP中的变量匹配的键。现在,您的方法将在web.xml中设置模板配置的根目录中查找名为test.jsp
的文件。如果考虑到所有这些,您的方法可能如下所示:
@GET
@Produces(MediaType.TEXT_HTML)
public Viewable getMobileReport() {
return new Viewable("/test", service.getMobileReport(id));
}