我有一个简单的休息控制器,可以捕获错误。我想获得浏览器发送给服务器的实际URL,但是servlet给了我一个不同的URL。
如果我导航到class MainProgram():
def __init__(self):
# etc.
self.frame_1 = FirstFrame(self)
self.frame_2 = SecondFrame(self)
# ...
class SecondFrame():
def __init__(self, parent):
self.parentobj = parent
self.parent = parent.win
# etc.
# and so on
def b_fuction(self):
self.var2 = self.parentobj.frame_1.var1
,则会触发404错误,并将其路由到定义的127.0.0.1/abc
处理程序。但是,输出结果为/error
而不是127.0.0.1/error
。如何获取原始网址?
127.0.0.1/abc
答案 0 :(得分:0)
您可以定义自己的originalUri
,在/error
映射处理之前,将原始请求URI保存为您请求的属性:
@RequestMapping("/error")
public String error(HttpServletRequest request) {
System.out.println("ERR: " + request.getAttribute("originalUri"));
return "ERR";
}
然后在您正在使用的forward()
映射实现中读取新的ResponseEntity
属性:
@ExceptionHandler
您还可以尝试扩展Spring MVC中可用的其他错误处理类来添加此行为,例如ResponseEntityExceptionHandler
。请注意,我的示例中的 public class YourServlet extends AbstractImageServlet {
protected Layer createLayer(AbstractImageServlet.ImageContext imageContext)
throws RepositoryException, IOException {
Layer resized = ImageHelper.resize(layer, new Dimension(), new Dimension(0, 0),
new Dimension(768, 768));
}
protected void writeLayer(SlingHttpServletRequest request, SlingHttpServletResponse response,
AbstractImageServlet.ImageContext context, Layer layer, double quality)
throws IOException, RepositoryException {
super.writeLayer(request, response, context, layer, QUALITY);
}
}
可能会被视为肤浅,因为可以从{{1}}返回{{1}}。