如何在jsp中访问ModelMap?

时间:2010-08-01 23:00:49

标签: java jsp spring-mvc jstl

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

Syntax error on token "$", delete this token

JSP

<body>
        <% MenuWriter m = ${data.menus} %>
        <%= m.getMenus()%>  
</body>

爪哇

@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"; 
    }
}

2 个答案:

答案 0 :(得分:8)

不推荐使用<% %>语法,不应再使用它。

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

<body>
   ${menus.menus}
</body>

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

另外,您的注释

@SessionAttributes("data")

此处不执行任何操作,因为ModelMap中没有密钥data的条目。这仅在您希望在整个会话中保留模型数据时才有用,这似乎不是您需要的。

答案 1 :(得分:1)

${varName}表示法只能在jstl中使用,而且从不 - 在普通的java代码中。 $字符在Java中没有特殊含义。

尝试pageContext.getAttribute("varName")session.getAttribute("varName")之类的内容(不记得它是如何完成的)。