Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何更改Alfresco ftl(freemarker)控件的基本字段?_Javascript_Workflow_Alfresco_Freemarker - Fatal编程技术网

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

Javascript 如何更改Alfresco ftl(freemarker)控件的基本字段?,javascript,workflow,alfresco,freemarker,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 = f

我试图将一个非常简单的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。脚本也会执行,我得到第一个警报。我可以将字段的名称视为一个大字符串(其中该字符串的parte是基本字段的名称:myList)

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

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

答案如下:

<#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属性。

您确定在dom中生成的id与${fieldHtmlId}相同吗?是的,但我已经解决了问题。好的,你能把解决方案作为你问题的答案发布出来,这样每个人都能从中受益吗?当然!当在Alfresco中,一个ftl组件与一个字段相关联时,我想Alfresco会管理基本字段的生命周期。但那不是真的。我们需要在t中创建一个字段作为输入字段他控制。这就是为什么我没有得到字段…因为它没有被创建。在那之后,我仍然无法将表中选定的数据设置为我的基本(工作流)字段,因为我只是像这样设置字段的id:id=“${fieldHtmlId}”。但是,我们还必须像这样设置输入字段的名称:name=“${field.name}”当做