2016-07-26 22 views
1

Ich versuche, eine sehr einfache ftl als Steuerelement zu einem Workflow-Formularfeld zu definieren.Wie ändere ich das Basisfeld eines Alfresco ftl (Freemarker) Controls?

Dies ist der Code, wo der FTL verwendet wird:

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

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

</field> 

Dies ist der FTL-Code:

<#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> 

Das Problem:

Ich kann auf die resultierende html sehen meine Workflow-Formular. Das Skript wird ebenfalls ausgeführt und ich erhalte die erste Warnung. Ich kann den Namen des Feldes als eine große Zeichenkette sehen (wobei parte dieser Zeichenkette der Name des Basisfeldes ist: myList.

Allerdings gibt die zweite und die dritte Warnung immer null zurück. So kann ich nicht bekommen das Basisfeld, um seinen Wert zu ändern/zu aktualisieren

Was fehlt mir? Bitte beachten Sie, dass dieses Problem nicht mit der Async-Eigenschaft der Workflow-Formulare zusammenhängt, weil ich das Skript ausführen kann, wenn ein Benutzer klickt auch eine Schaltfläche (und in diesem Fall ist der DOM ganz eingestellt ... ja ich Minuten warten, bis es), werde ich null erhalten

+1

Sind Sie sicher, dass die in Ihrem Dom generierte ID mit $ {fieldHtmlId} übereinstimmt? – Akah

+0

ja, aber ich habe das Problem herausgefunden. – user3643038

+0

Ok, könnten Sie bitte die Lösung als Antwort auf Ihre Frage posten, damit jeder davon profitieren kann? – Akah

Antwort

2

die Antwort lautet:.

<#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> 

Wir müssen immer ein Eingabefeld haben, das den Wert des Feldes myTes:myList enthält. Um den Wert dieses Feldes festzulegen, müssen Sie das name-Attribut wie im Beispiel festlegen.