Java 如何在JSF页面中输出与httpresponse错误相关的错误消息

Java 如何在JSF页面中输出与httpresponse错误相关的错误消息,java,json,spring,jsf,Java,Json,Spring,Jsf,我有以下逻辑代码(将错误置于响应中): 代码data.put(“错误”,“超出限制大小”)似乎不起作用,因为我想在响应中添加错误消息 有什么建议吗 我不知道这是否是您案例中最简单的方法,但是有一个名为的JSF标记,它可以显示具有4个严重级别的FacesContext消息 见文件: 以下是它在一个简单案例中的工作原理: 视图(.jsf): public ModelAndView resolveException(HttpServletRequest request, HttpServlet

我有以下逻辑代码(将错误置于响应中):

代码data.put(“错误”,“超出限制大小”)似乎不起作用,因为我想在响应中添加错误消息


有什么建议吗

我不知道这是否是您案例中最简单的方法,但是有一个名为
的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);