Заполните значения в раскрывающемся списке
У меня есть узел, в котором есть свойство, которое содержит формат JSON, который требуется раскрыть.
[{"text":"Type1","value":"Type1"},{"text":"Type2","value":"Type2"},{"text":"333","value":"333"}]
У меня есть fie options.json.jsp внутри компонента вместе с component.jsp
<%@include file="/libs/foundation/global.jsp"%><%
response.setContentType("text/plain");
%><%
try {
Node parent = resource.getResourceResolver().getResource("/etc/IgWebCMS/articletypes").adaptTo(Node.class);
String json=parent.getProperty("json").getString();
System.out.println("options json :::: "+json);
}
catch (RepositoryException re) {}
%>
${json}
В Stdout.log это показывает мне:
options json :::: [{"text":"Type1","value":"Type1"},{"text":"Type2","value":"Type2"},{"text":"333","value":"333"}]
И в раскрывающемся диалоговом окне я упомянул свойство options как: $PATH.options.json
Но в моем диалоге эти значения не заполняются. Любая идея.
Спасибо
1 ответ
Это не сработает, потому что ваш ${json}
всегда будет пустой строкой, так как вы используете EL для отображения значения, но никогда не устанавливаете значение в первую очередь.
Чтобы использовать EL, у вас должно быть значение в PageContext, которое можно установить следующим образом.
<c:set var="json" value="<%= json %>" escapeXml="false" />
или же
pageContext.setAttribute("json", json);
Придя к тому, чтобы ваш код заработал, вы можете использовать json напрямую, используя скриптлет, такой как <%= json %>
вместо ${ json }
или вы можете установить значение pageContext изначально, а затем распечатать его, используя ${ json }
Но в случае, если вы пытаетесь использовать скриптлет, вам следует рассмотреть возможность изменения кода, поскольку переменная объявляется в блоке try, но используется вне его.
<%@ include file="/libs/foundation/global.jsp" %>
<%
response.setContentType("text/plain");
try {
Node parent = resource.getResourceResolver().getResource("/etc/IgWebCMS/articletypes").
adaptTo(Node.class);
out.print(parent.getProperty("json").getString());
} catch (RepositoryException re) {
log.error(re.getMessage, re);
}
%>
И, наконец, если вы собираетесь сохранить весь json как свойство в каком-то узле, то вместо написания json.jsp для извлечения значений вы можете напрямую указать путь к свойству, в котором хранится значение. т.е. вместо $PATH.options.json
вы можете напрямую указать как /etc/IgWebCMS/articletypes/json