Как я могу получить доступ к ModelMap в JSP? - PullRequest
5 голосов
/ 02 августа 2010

Как получить доступ к объекту из ModelMap в jsp, чтобы к нему можно было вызывать метод?В настоящее время я получаю эту ошибку:

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

Ответы [ 2 ]

8 голосов
/ 02 августа 2010

Синтаксис <% %> устарел и больше не должен использоваться.

Эквивалент в современном JSP вашего фрагмента JSP будет:

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

Очевидно, это выглядит сбивающим с толку, поэтому вы можете рассмотреть вопрос о переименовании частей вашей модели для ясности.

Также ваша аннотация

@SessionAttributes("data")

здесь ничего не делает, так как у вас нет записи в ModelMap с ключом data. Это полезно только в том случае, если вы хотите сохранить данные модели в течение сеанса, что, как вам кажется, здесь не нужно.

1 голос
/ 02 августа 2010

${varName} нотация может использоваться только в jstl, и никогда - в простом коде Java.Символ $ не имеет особого значения в Java.

Попробуйте что-то вроде pageContext.getAttribute("varName") или session.getAttribute("varName") (не помню, как именно это сделано).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...