У меня такой код:
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. Как я могу это сделать?
По сути, вы хотите сгенерировать правильное представление 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, чтобы он работал.
Вы можете использовать функцию расширения jQuery, чтобы заменить значение из вашего объекта по умолчанию, содержащимся в вашем полученном объекте.
http://api.jquery.com/jQuery.extend/
fullobject = $.extend({}, static_object, dynamic_object));
field
? Не зная, что это действительно трудно сказать.