2016-07-26 92 views
1

我试图定义一个非常简单的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我工作流表单。该脚本也执行,我得到第一个警报。我可以看到字段的名称为一个大字符串(其中该字符串的一部分是基本字段的名称:myList。

但是,第二个和第三个警报总是返回null。所以我无法获得这个问题与工作流表单的异步性质无关,因为即使我在用户点击时运行脚本,也是如此。一个按钮(在这种情况下,DOM是所有设置......是的,我等待它分钟),我会得到空也

+1

您确定在您的dom中生成的id与$ {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属性。

相关问题