如何在jsp中访问ModelMap?

Jam*_*mes 5 java jsp jstl spring-mvc

如何在jsp中从ModelMap访问对象,以便可以在其上调用方法?目前我收到此错误:

Syntax error on token "$", delete this token
Run Code Online (Sandbox Code Playgroud)

JSP

<body>
        <% MenuWriter m = ${data.menus} %>
        <%= m.getMenus()%>  
</body>
Run Code Online (Sandbox Code Playgroud)

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"; 
    }
}
Run Code Online (Sandbox Code Playgroud)

ska*_*man 8

<% %>不推荐使用该语法,不应再使用该语法.

JSP片段的现代JSP中的等价物将是:

<body>
   ${menus.menus}
</body>
Run Code Online (Sandbox Code Playgroud)

显然,这看起来令人困惑,因此您可能需要考虑重新命名模型的某些部分以保持清晰.

另外,你的注释

@SessionAttributes("data")
Run Code Online (Sandbox Code Playgroud)

这里什么都不做,因为你没有ModelMap钥匙进入data.这仅在您希望在会话中保留模型数据时才有用,这在您看来不需要.

  • @James:尝试`@SessionAttributes({"menus","anotherSessionVar"})` (2认同)