Загрузить объект hashMap, переданный из контроллера в JavaScript?

0

Мы разрабатываем веб-страницу с использованием Spring MVC. В одном из наших контроллеров мы имеем HashMap, который мы должны отправить в наш jsp, например:

ModelAndView model = sisoController.getGenericModelAndView(request);

HashMap<String, boolean> hashMap = new HashMap<String, boolean>();
hashMap.put("name", true); 
hashMap.put("surname", false); //... and so on

model.addObject("operationFields", hashMap);

model.setViewName("createOperation.html");
return model;

Теперь нам нужно получить доступ к этой hashMap на нашей странице jsp, в разделе javascript, когда document.ready. Что-то вроде:

    var operationFields= ${operationFields};
    $.each(operationFields, function(key, value) {
        console.log(key + ": " + value);
    });

Но это отвечает следующей ошибкой:

SyntaxError: missing : after property id

var operationFields= {name=true, surname=false};

Как мы можем получить доступ к hashMap?

  • 0
    Ваш контроллер сохранил данные в модели, а затем вы предполагаете использовать Ajax, вызвать метод и получить модель, а затем извлечь данные из нее. Вы могли бы предоставить больше кода в JSP, может быть?
  • 0
    Код, который я написал, был всем кодом, связанным с функциональностью. HashMap генерируется динамически в зависимости от пользователя, вошедшего в систему (но это не проблема). Позже в jsp вместо console.log я хочу сделать что-то вроде $ ('input [name = "' + key + '"]'). RemoveClass ("error"); только если его значение правда. Но для этого мне нужно сначала пройти через hashMap, только когда документ будет готов
Теги:
spring-mvc
hashmap

1 ответ

1
Лучший ответ

Вам нужно будет преобразовать HashMap (серверную часть) в нечто доступное из Javascript (на стороне клиента). В настоящее время JSP просто выводит строковое значение operationFields HashMap которая не является синтаксисом Javascript. Вероятно, проще всего преобразовать HashMap в литерал объекта Javascript.

var operationFields = {
<c:forEach var="entry" items="${operationFields}">
    '${entry.key}': '${entry.value}',
</c:forEach>
};
  • 0
    ХОРОШО. Пытаясь упростить задачу, мы использовали список с тем объектом, значение которого было истинным. Однако проблема была такой же, как указал Уилл, потому что javascript не знает, что делать с этим списком. Мы наконец решили, что отправляем строку в javascript следующим образом: String array = "[\ '" + StringUtils.join (fields, "', '") + "\']";

Ещё вопросы

Сообщество Overcoder
Наверх
Меню