如何更改Alfresco ftl(freemarker)控件的基本字段?

时间:2016-07-26 01:00:21

标签: javascript workflow alfresco freemarker

我试图将一个非常简单的ftl定义为工作流表单字段的控件。

这是使用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。该脚本也会执行,我收到第一个警报。我可以看到该字段的名称是一个大字符串(该字符串的一部分是基本字段的名称:myList。

但是,第二个和第三个警报始终返回null。所以我无法获得基本字段以更改/更新其值。

我错过了什么?请注意,此问题与工作流表单的异步性质无关,因为即使我在用户单击按钮时运行脚本(在这种情况下,DOM已全部设置...是的,我等待几分钟),我也会得到零。

1 个答案:

答案 0 :(得分: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属性。