2017-09-27 5 views
0

Hallo, ich habe schreiben eine Feder surf Form Erweiterungen für die Software alfresco, in der spezifischen ein Dropdown, wo ich den Wert auf eine dynamische Art und Weise den Wert zu lesen von alfresco oder eine Eigenschaftendatei hier die myaction-share-amp-actions-extension-modules:Wie Setup Spring Surf Form Alfresco Anteil mit dynamischen Variablen aus einer Eigenschaftendatei

<extension> 
................................................................. 
<config evaluator="string-compare" condition="signed"> 
     <forms> 
      <form> 
       <field-visibility> 
         ............................................ 
         <show id="my_form_sign_firma.tipo"/> 
         ...................................  
       </field-visibility> 
       <appearance> 
..................... 



<field id="my_form_sign_firma.tipo" label-id="property.form.sign.my_form_sign_firma.tipo"> 
<control template="/org/alfresco/components/form/controls/selectone.ftl"> 
<control-param name="options">${value1},${value2},${value3}</control-param> 
</control> 
</field>  
.................... 

oder in alternativen

.................... 

<field id="my_form_sign_firma.tipo" label-id="property.form.sign.my_form_sign_firma.tipo"> 
<control-param name="options">${valueX}</control-param> 
<!-- where valueX= "value1,value2,value3" --> 
</control> 
</field> 
.................... 
         </appearance> 
        </form> 
       </forms> 
      </config> 

........................................... 

</extension> 

und die Bohne für Last der Eigenschaften, die in der Datei share-config.xml:

<bean id="configurazioniBeanCompletoLocale" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
<property name="locations"> 
<list> 
<value>classpath*:it/test/properties/myalfresco.properties</value> 
</list> 
</property> 
<property name="ignoreResourceNotFound" value="true" /> 
<property name="ignoreUnresolvablePlaceholders" value="true" /> 
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" /> 
<property name="propertiesPersister"> 
<bean class="org.alfresco.config.AlfrescoPropertiesPersister" /> 
</property> 
</bean> 

und die Eigenschaften-Datei auf der share-config.xml Datei gesetzt:

classpath*:it/test/properties/myalfresco.properties 

und die Datei myalfresco.properties enthält:

value1=hello 
value2=hi 
value3=goodbye 
valueX=hello,hi,goodbye 

in alternativen i Eigenschaft einer bestimmten Datei zu verwenden, akzeptieren auf Alfresco, wenn jemand wissen, wie zum Beispiel zu tun:

mit Eigenschaften eines Aspekts „Configurator“ mit den Eigenschaften:

value1=hello 
value2=hi 
value3=goodbye 
valueX=hello,hi,goodbye 

Es gibt einen Weg eines von diesen zu tun?

UPDATE:

ich jetzt auf dem Papier eine vollständige Lösung auf diesen Link zu schreiben versuchen,: https://community.alfresco.com/thread/233246-how-setup-spring-surf-form-with-dinamic-variables-from-a-properties-file

Hier können Sie ein weiteres Beispiel ähnlich zu diesem Fall finden können: Sie https://community.alfresco.com/thread/209460-dynamic-selectone-in-alfresco-share

Antwort

1

Wie von Vikash sagt, würde ich vorschlagen, dass Sie Ihr benutzerdefiniertes Formular-Steuerelement erstellen (es im src/main/amp/config/alfresco/web-extension/site-webscripts/org /alfresco /components/form/controls/mycontrol.ftl Ordner abgelegt).

Innerhalb rufen Sie ein benutzerdefiniertes von Ihnen erstelltes Webskript auf (welches die Werte Ihrer Datei erhält). Das ist der triviale Teil, ich habe nicht das Bedürfnis, Ihnen ein Beispiel zu zeigen.

Sie an diesem (vereinfachte) Beispiel für den FTL Teil aussehen:

... 
<select id="${fieldHtmlId}" name="${field.name}" tabindex="0" 
    <#if field.description??>title="${field.description}"</#if> 
</select> 
... 
<script type="text/javascript">//<![CDATA[ 
YAHOO.util.Event.onContentReady("${fieldHtmlId}", function() 
{ 
    Alfresco.util.Ajax.jsonGet({ 
     url: encodeURI(Alfresco.constants.PROXY_URI + '/myserviceuri'), 
     successCallback: 
     { 
      fn: function loadWebscript_successCallback(response, config) 
      { 
       var obj = eval('(' + response.serverResponse.responseText + ')'); 
       if (obj) 
       { 
        for (i = 0; i < obj.length; i++) { 
          var newOption = document.createElement('option'); 
          newOption.value = obj[i].id; 
          newOption.text = obj[i].name; 
          YAHOO.util.Dom.get("${fieldHtmlId}").options.add(newOption); 
        } 
       } 
      } 
     } 
    }); 

}, this); 
//]]></script> 

Sie können dann verwenden, auf diese Weise:

<field id="my_form_sign_firma.tipo" label-id="property.form.sign.my_form_sign_firma.tipo"> 
<control template="/org/alfresco/components/form/controls/mycontrol.ftl"> 
</control> 
</field> 
1

kann Ihre benutzerdefinierte ftl-Datei als Formularsteuerelement verwenden

Geben Sie Vorlagenpfad zu Ihrer benutzerdefinierten ftl-Datei im Freigabeformular

<form> 
     <appearance> 
      <field id="cm:name"> 
       <control template="/my-textfield.ftl" /> 
      </field> 
     </appearance> 
     </form> 

Siehe diesen Documentation

+0

ja, ich habe versucht, aber ich kann das abrufen Eigenschaftendatei aus der .ftl-Datei? Ich meine, ich habe keinen funktionierenden JavaScript-Code gefunden, um die Dateieigenschaften von meiner template.ftl abzurufen, wenn Sie mir ein Beispiel zeigen können, das die perfekte Lösung sein kann. – 4535992

Verwandte Themen