How do I access ModelMap in a jsp?

17,222

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).

Share:
17,222
James
Author by

James

Updated on June 15, 2022

Comments

  • James
    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"; 
        }
    }