2016-07-26 2 views
1

Im пытается определить очень простой ftl как элемент управления для поля формы рабочего процесса.Как изменить базовое поле управления Alfresco ftl (freemarker)?

Это код, в котором используется FTL:

<field id="myTes:myList" set="noderefs" mandatory="true" > 

<control template="/org/alfresco/components/form/controls/myFTLExample.ftl" />  

</field> 

Это код FTL:

<#assign controlId = fieldHtmlId + "-cntrl"> 

<b>test</b> 

<script type="text/javascript">//<![CDATA[ 

alert("${fieldHtmlId}"); //I can see the generated name of the field 

alert(document.getElementById("${fieldHtmlId}")); //returns null 

alert(YAHOO.util.Dom.get("${fieldHtmlId}")); //returns null 


} 

//]]></script> 

Проблема:

я могу увидеть результат HTML на моем форма рабочего процесса. Сценарий также выполняется, и я получаю первое предупреждение. Я могу видеть имя поля как большую строку (где parte этой строки - это имя базового поля: myList.

Однако второе и третье предупреждения всегда возвращают null. Поэтому Im не удалось получить базовое поле, чтобы изменить/обновить его значение.

Что мне не хватает? Обратите внимание, что эта проблема не связана с асинхронным характером форм рабочего процесса, потому что, даже если я запускаю сценарий, когда пользователь нажимает кнопка (и в этом случае DOM все готово ... да я жду минут для него), я буду получать нуль также

+1

Вы уверены, что идентификатор, сгенерированный в вашем dom, совпадает с $ {fieldHtmlId}? – Akah

+0

Да, но я выяснил проблему. – user3643038

+0

Хорошо, не могли бы вы разместить решение в качестве ответа на свой вопрос, чтобы каждый мог воспользоваться? – Akah

ответ

2

ответ таков:.

<#assign controlId = fieldHtmlId + "-cntrl"> 

<b>test</b> 
<input id="${fieldHtmlId}" type="hidden" name="${field.name}" value="" /> 

<script type="text/javascript">//<![CDATA[ 

alert("${fieldHtmlId}"); //I can see the generated name of the field 

alert(document.getElementById("${fieldHtmlId}")); //returns null 

alert(YAHOO.util.Dom.get("${fieldHtmlId}")); //returns null 


} 

//]]></script> 

Мы всегда должны иметь поле ввода, которое будет удерживать значение поля myTes:myList. Кроме того, чтобы установить значение этого поля, мы должны установить атрибут name, как в примере.