Java 在提交表单下载二进制ReST资源时,如何更好地处理这些资源错误?

Java 在提交表单下载二进制ReST资源时,如何更好地处理这些资源错误?,java,rest,spring-mvc,Java,Rest,Spring Mvc,我有一个服务,它通过一个表单生成PDF文档,GETs基于输入参数的ReST资源。其中一些条目映射到请求路径,其他条目映射到可选的请求参数,如下所示为ReST资源 /api/invoices/{invoiceNumber}?format={format} 在提交表单时,我重写表单上的操作,以匹配资源URI。但是,如果发票号不存在,资源将根据任何错误条件返回404或所需的任何其他错误代码 我可以通过在页面上设置错误消息来解决这个问题,但是由于表单目标是\u blank要打开一个新窗口,表单会在目标

我有一个服务,它通过一个表单生成PDF文档,
GET
s基于输入参数的ReST资源。其中一些条目映射到请求路径,其他条目映射到可选的请求参数,如下所示为ReST资源

/api/invoices/{invoiceNumber}?format={format}
在提交表单时,我重写
表单上的
操作
,以匹配资源URI。但是,如果发票号不存在,资源将根据任何错误条件返回
404
或所需的任何其他错误代码

我可以通过在页面上设置错误消息来解决这个问题,但是由于表单
目标
\u blank
要打开一个新窗口,表单会在目标窗口中重新显示,并显示正确的错误消息,当然表单是空白的


我更喜欢通过异步ajax请求来处理文档,该请求可以检测并适当地处理任何错误消息/条件,但我不确定这是否可行(使用jQuery).

我认为不可能有条件地打开该窗口,因为此时您已经将内容下载到父窗口中。使用JQuery可以做到这一点,但通常在窗口之间发送内容是麻烦且脆弱的

我要做的是提交表格

  • 使用另一个操作(例如fileShowAction)打开一个新窗口,并将restful URL作为参数传递
  • 让新窗口通过JQuery或其他表单提交URL
  • 如果出现错误,您可以使用OK或timer显示错误以关闭窗口
选项2

在带有IFrame的JQuery内联对话框中显示文件

选项3

让您的初始REST调用返回带有错误的HTML等,或者重定向到文件位置。还有其他几种使用REST语义的替代方法,例如使用
位置
标题