1 package org
.argeo
.server
.mvc
;
3 import java
.util
.Locale
;
6 import javax
.servlet
.http
.HttpServletRequest
;
7 import javax
.servlet
.http
.HttpServletResponse
;
9 import org
.argeo
.ArgeoException
;
10 import org
.argeo
.server
.ServerAnswer
;
11 import org
.argeo
.server
.ServerSerializer
;
12 import org
.springframework
.web
.servlet
.view
.AbstractView
;
14 public class SerializingView
extends AbstractView
implements MvcConstants
{
15 private final String viewName
;
16 private final Locale locale
;
18 private final ServerSerializer serializer
;
20 public SerializingView(String viewName
, Locale locale
,
21 ServerSerializer serializer
) {
22 this.viewName
= viewName
;
24 this.serializer
= serializer
;
27 @SuppressWarnings("unchecked")
29 protected void renderMergedOutputModel(Map model
,
30 HttpServletRequest request
, HttpServletResponse response
)
32 Boolean serverAnswersAsHtml
= false;
34 if (model
.size() == 1) {
35 answer
= model
.values().iterator().next();
36 } else if (model
.containsKey(ANSWER_MODEL_KEY
)) {
37 answer
= model
.get(ANSWER_MODEL_KEY
);
38 } else if (model
.containsKey(ANSWER_MODEL_KEY_AS_HTML
)) {
39 answer
= model
.get(ANSWER_MODEL_KEY_AS_HTML
);
40 serverAnswersAsHtml
= true;
41 } else if (model
.containsKey(viewName
)) {
42 answer
= model
.get(viewName
);
44 if (model
.size() == 0)
45 throw new ArgeoException("Model is empty.");
47 throw new ArgeoException(
48 "Model has a size different from 1. Specify a modelKey.");
51 if ((answer
instanceof ServerAnswer
) && serverAnswersAsHtml
) {
52 response
.setContentType("text/html");
53 ServerAnswer serverAnswer
= (ServerAnswer
) answer
;
54 response
.getWriter().append("<pre>");
55 response
.getWriter().append(serverAnswer
.getMessage());
56 response
.getWriter().append("</pre>");
58 serializer
.serialize(answer
, request
, response
);
62 public String
getViewName() {
66 public Locale
getLocale() {