forked from jooby-project/jooby
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathModelAndView.java
More file actions
119 lines (105 loc) · 2.62 KB
/
ModelAndView.java
File metadata and controls
119 lines (105 loc) · 2.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/**
* Jooby https://jooby.io
* Apache License Version 2.0 https://jooby.io/LICENSE.txt
* Copyright 2014 Edgar Espina
*/
package io.jooby;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
/**
* Used by template engines to renderer views.
*
* @since 2.0.0
* @author edgar
*/
public class ModelAndView {
/** View name. */
private final String view;
/** View data. */
private final Map<String, Object> model;
/** Locale used when rendering the view. */
private Locale locale;
/**
* Creates a new model and view.
*
* @param view View name must include file extension.
* @param model View model.
*/
public ModelAndView(@Nonnull String view, @Nonnull Map<String, Object> model) {
this.view = view;
this.model = model;
}
/**
* Creates a new model and view.
*
* @param view View name must include file extension.
*/
public ModelAndView(@Nonnull String view) {
this(view, new HashMap<>());
}
/**
* Put a model attribute.
*
* @param name Name.
* @param value Value.
* @return This model and view.
*/
public ModelAndView put(@Nonnull String name, Object value) {
model.put(name, value);
return this;
}
/**
* Copy all the attributes into the model.
*
* @param attributes Attributes.
* @return This model and view.
*/
public ModelAndView put(@Nonnull Map<String, Object> attributes) {
model.putAll(attributes);
return this;
}
/**
* Sets the locale used when rendering the view, if the template
* engine supports setting it. Specifying {@code null} triggers a
* fallback to a locale determined by the current request.
*
* @param locale The locale used when rendering the view.
* @return This instance.
*/
public ModelAndView setLocale(@Nullable Locale locale) {
this.locale = locale;
return this;
}
/**
* View data (a.k.a as model).
*
* @return View data (a.k.a as model).
*/
public Map<String, Object> getModel() {
return model;
}
/**
* View name with file extension, like: <code>index.html</code>.
*
* @return View name with file extension, like: <code>index.html</code>.
*/
public String getView() {
return view;
}
/**
* Returns the locale used when rendering the view. Defaults to
* {@code null}, which triggers a fallback to a locale
* determined by the current request.
*
* @return The locale used when rendering the view.
*/
@Nullable public Locale getLocale() {
return locale;
}
@Override public String toString() {
return view;
}
}