如何在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";
}
}
答案 0 :(得分:8)
不推荐使用<% %>
语法,不应再使用它。
JSP片段的现代JSP中的等价物将是:
<body>
${menus.menus}
</body>
显然,这看起来令人困惑,因此您可能需要考虑重新命名模型的某些部分以便清晰。
另外,您的注释
@SessionAttributes("data")
此处不执行任何操作,因为ModelMap
中没有密钥data
的条目。这仅在您希望在整个会话中保留模型数据时才有用,这似乎不是您需要的。
答案 1 :(得分:1)
${varName}
表示法只能在jstl中使用,而且从不 - 在普通的java代码中。 $
字符在Java中没有特殊含义。
尝试pageContext.getAttribute("varName")
或session.getAttribute("varName")
之类的内容(不记得它是如何完成的)。