我试图将一个非常简单的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已全部设置...是的,我等待几分钟),我也会得到零。
答案 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属性。