Я хочу сделать свой заказ selectone.ftl. Я иду шаг за шагом, поэтому я создал customselectone.ftl с постоянными значениями для возврата из javascript в ftl-элемент управления. Итак, у меня есть newCodes [c1, c2, c3], ведь я хочу быть в списке избранных.Alfresco custom-selectone.ftl
Когда я запускаю Alfresco Share и запускаю свое действие, я получаю диалог с пустым selectone, а результат alert (document.getElementById ("$ {fieldHtmlId}")) равен null. Почему это? Я использую версию Alfresco 5.0.d. Буду признателен за любую помощь. Благодарю.
customselectone.ftl
<#assign controlId = fieldHtmlId + "-cntrl">
<script type="text/javascript">//<![CDATA[
var newCodes = ["c1", "c3", "c4"];
alert(document.getElementById("${fieldHtmlId}"));
alert(document.getElementById("${controlId}"));
var sel = document.getElementById(${fieldHtmlId});
alert(sel);
alert(newCodes);
for(var i = 0; i < newCodes.length; i++) {
alert('usao u petlju');
var opt = document.createElement('option');
opt.innerHTML = newCodes[i];
opt.value = newCodes[i];
sel.appendChild(opt);
}
//]]></script>
<div id="${controlId}" class="form-field">
<labelfor="${fieldHtmlId}">${msg("form.control.myoptions.label")}:<#if field.mandatory><span class="mandatory-indicator">${msg("form.required.fields.marker")}</span></#if></label>
<select id="${fieldHtmlId}" name="prop_${field.name}" tabindex="0"
<#if field.description??>title="${field.description}"</#if>
<#if field.control.params.size??>size="${field.control.params.size}"</#if>
<#if field.control.params.styleClass??>class="${field.control.params.styleClass}"</#if>
<#if field.control.params.style??>style="${field.control.params.style}"</#if>>
</select>
<@formLib.renderFieldHelp field=field />
</div>
доля-конфигурации-custom.xml
<!-- Custom Action Forms -->
<config evaluator="string-compare" condition="changeDmsMonaType">
<forms>
<form>
<field-visibility>
<show id="docClass" />
</field-visibility>
<appearance>
<field id="docClass" label-id="actions.dmsmona.changeDmsMonaType.docClass">
<control template="/org/alfresco/components/form/controls/customselectone.ftl">
</control>
</field>
</appearance>
</form>
</forms>
</config>
Да, это причина, я пришел к выводу об этом позже .. Я делаю это из Java Script, потому что, позже, я хочу передать некоторые динамические значения в Java Script и сделать его в Freemarker, это не будет ['c1', 'c2', 'c3'], чем некоторый динамический массив, который я получу из Java, поддерживаемого WebScript. –
Я рассматривал готовую функцию, но там нет jQuery .. только чистый JavaScript. У вас есть идея, как я могу это сделать? Спасибо за ответ :) –
Изменен мой ответ с примером JavaScript. –