Читать объект Java в JQuery

0

У меня такой код:

  function () {
    var field=$('#bomPartModels').val(); 
    START.bom.addIcons({

        "ABC123-2":  {"name": "", "qty": 4, "image": "images/UK_OO_HR2000_IT.jpg", "incart": 0, "model": []},
        "ABC123-3":  {"name": "Downconverter Mixer", "qty": 16, "image": "images/UK_Universal_Cable_Adaptors_IT.jpg", "incart": 0, "model": []},
      });
  });
});

BomPartModels - это список объектов Java beans с каждым компонентом, содержащим имя, qty-изображение и т.д. Это было возвращено из добавления контроллера в модель

Мне нужно заменить статические значения в START.bom.addIcons динамическими значениями, читаемыми из объекта bomPartModels. Как я могу это сделать?

  • 0
    Как выглядит значение field ? Не зная, что это действительно трудно сказать.
  • 0
    Поле содержит список bomPartModels. Каждый bomPartModel представляет собой Java-объект с сеттерами и геттерами для каждой переменной id, name, qty, image. Таким образом, на jsp я получаю доступ к имени как $ {bomPartModels [0] .name}. Я хочу использовать то же имя в jquery с заменой статических значений «ABC123-2»: {«name»: «», « кол-во ": 4," image ":" images / UK_OO_HR2000_IT.jpg "," incart ": 0," model ": []},
Показать ещё 7 комментариев
Теги:
spring
controller

2 ответа

0

По сути, вы хотите сгенерировать правильное представление JSON этого объекта JavaScript на вашей странице JSP вместо того, что вы имеете сейчас. Поэтому в JSP этот раздел кода будет выглядеть так:

function () {
    var field=$('#bomPartModels').val(); 
    START.bom.addIcons(
        // code to generate JSON here
    );
});

//code to generate JSON here где он становится интересным. Существует несколько способов сделать это, но то, что вы не хотите делать, это попытаться создать его вручную; что просто просят ввести ошибки и для этого в конечном итоге пойти не так.

Лично, всякий раз, когда мне нужно генерировать содержимое JSON в JSP, я использую json-taglib. Это будет выглядеть примерно так:

START.bom.addIcons(<json:object>
    <c:forEach items="${bomPartModels}" var="bpm">
        <json:object name="${bpm.id}">
            <json:property name="name" value="${bpm.name}"/>
            <json:property name="qty" value="${bpm.qty}"/>
            ... // other properties
        </json:object>
    </c:forEach>
</json:object>);

Недостатком этого является то, что вы ограничены наличием кода JavaScript внутри JSP, чтобы он работал.

0

Вы можете использовать функцию расширения jQuery, чтобы заменить значение из вашего объекта по умолчанию, содержащимся в вашем полученном объекте.

http://api.jquery.com/jQuery.extend/

fullobject = $.extend({}, static_object, dynamic_object));
  • 0
    Спасибо, моя проблема в том, что значение 'field' содержит список объектов Java-бина (bomPartModels1, bomPartModels2), в которых есть сеттеры и геттеры для переменных id, name, qty, image. Поэтому на уровне jsp я обычно читаю значение как $ {bomPartModels [0] .id}, $ {bomPartModels [0] .name}, $ {bomPartModels [0] .qty}, но как это сделать в приведенном выше сценарии, т.е. замена статических значений "ABC123-2": {"name": "", "qty": 4, "image": "images / UK_OO_HR2000_IT.jpg", "incart": 0, "model": []},
  • 0
    Вашему вопросу не хватает полных объяснений. Насколько я понимаю: - храните ваше статическое значение в объекте javascript. - сохранить ответ с вашего сервера в другом объекте (var). - объединить 2 с методом расширения, показанным выше. - используйте результат для своих нужд. Это должно делать то, что вы ожидаете (по крайней мере, это делает то, что, как я понял, вы ожидаете)

Ещё вопросы

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