How do I access ModelMap in a jsp?
Solution 1
The <% %>
syntax is deprecated, and shouldn't be used any more.
The equivalent in modern JSP of your JSP fragment would be:
<body>
${menus.menus}
</body>
Obviously, that looks confusing, so you may want to consider renaming parts of your model for clarity.
Also, your annotation
@SessionAttributes("data")
does nothing here, since you have no entry in the ModelMap
with the key data
. This is only useful if you want to keep the model data across the session, which it doesn't seem you need to here.
Solution 2
${varName}
notation can be used in jstl only, and never - in plain java code. $
character has no special meaning in Java.
Try something like pageContext.getAttribute("varName")
or session.getAttribute("varName")
(don't remember how exactly it's done).
James
Updated on June 15, 2022Comments
-
James almost 2 years
How can an object be accessed from the ModelMap in jsp so that a method can be called on it? Currently I recieve this error:
Syntax error on token "$", delete this token
JSP
<body> <% MenuWriter m = ${data.menus} %> <%= m.getMenus()%> </body>
Java
@Controller @RequestMapping("/dashboard.htm") @SessionAttributes("data") public class DashBoardController { @RequestMapping(method = RequestMethod.GET) public String getPage(ModelMap model) { String[] menus = { "user", "auth", "menu items", }; String[] files = { "menu", "item", "files", }; MenuWriter m = new MenuWriter(menus, files); model.addAttribute("menus", m); String[] atocs = { "array", "of", "String" }; model.addAttribute("user_atocs", atocs); return "dashboard"; } }