Java 如何在JSF页面中输出与httpresponse错误相关的错误消息
我有以下逻辑代码(将错误置于响应中): 代码data.put(“错误”,“超出限制大小”)似乎不起作用,因为我想在响应中添加错误消息Java 如何在JSF页面中输出与httpresponse错误相关的错误消息,java,json,spring,jsf,Java,Json,Spring,Jsf,我有以下逻辑代码(将错误置于响应中): 代码data.put(“错误”,“超出限制大小”)似乎不起作用,因为我想在响应中添加错误消息 有什么建议吗 我不知道这是否是您案例中最简单的方法,但是有一个名为的JSF标记,它可以显示具有4个严重级别的FacesContext消息 见文件: 以下是它在一个简单案例中的工作原理: 视图(.jsf): public ModelAndView resolveException(HttpServletRequest request, HttpServlet
有什么建议吗 我不知道这是否是您案例中最简单的方法,但是有一个名为
的JSF标记,它可以显示具有4个严重级别的FacesContext消息
见文件:
以下是它在一个简单案例中的工作原理:
视图(.jsf):
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
Exception ex) {
boolean maxSizeEx = true;
if (ex instanceof MaxUploadSizeExceededException) {
logger.debug("tried to upload a file that exceeded capacity", ex);
} else {
logger.warn("caught unexpected exception", ex);
maxSizeEx = false;
}
final boolean fMaxSizeEx = maxSizeEx;
View view = new View() {
public void render(Map model, HttpServletRequest request, HttpServletResponse response) throws Exception {
Map<String, String> data = new HashMap<String, String>();
if (fMaxSizeEx) {
data.put("error", "Limit size exceeded");
} else {
data.put("error", "internal error");
}
JsonApiController.mapToJsonAndOutput(response.getOutputStream(), data);
}
public String getContentType() {
return "application/json";
}
};
return new ModelAndView(view);
}
protected static void mapToJsonAndOutput(OutputStream out, Map<String, String> data) throws IOException {
if (data == null || data.isEmpty()) {
logger.warn("You should not call mapToJsonAndOutput if there is no data");
return;
}
JsonFactory f = new JsonFactory();
JsonGenerator g = f.createJsonGenerator(out, JsonEncoding.UTF8);
g.writeStartObject();
for (Entry<String, String> e : data.entrySet()) {
g.writeStringField(e.getKey(), e.getValue());
}
g.writeEndObject();
g.flush();
DevisPdfResourceController.close(out);
}
if (fMaxSizeEx) {
data.put("error", "Limit size exceeded");
} else {
data.put("error", "internal error");
}
JsonApiController.mapToJsonAndOutput(response.getOutputStream(), data)
<h:messages />
FacesMessage message = new FacesMessage(FacesMessage.YOUR_SEVERITY, "your description", "your message");
FacesContext.getCurrentInstance().addMessage(null, message);