Как настроить Spring Surf формы Alfresco поделиться с динамическими переменными из файла свойств

Привет, я написал весенние сёрф-расширения формы для программного обеспечения под открытым небом, в частности раскрывающийся список, где я хочу поместить значение в динамический способ чтения значения из alfresco или файл свойств здесь myaction-share-amp-actions-extension-modules:

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

или в альтернативе

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

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

И бин для загрузки свойств установлен на 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>

И файл свойств установлен на share-config.xml файл:

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

И файл myalfresco.properties содержит:

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

в качестве альтернативы я могу согласиться использовать свойство конкретного файла на свежем воздухе, если кто-нибудь знает, как это сделать, например:

Repository/Data Dictionary/configuration.txt со свойствами аспекта "Конфигуратор" со свойствами:

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

Есть способ сделать один из них?

ОБНОВИТЬ:

Теперь я постараюсь написать на бумаге полное решение по этой ссылке: https://community.alfresco.com/thread/233246-how-setup-spring-surf-form-with-dinamic-variables-from-a-properties-file

Здесь вы можете найти другой пример, похожий на этот случай: https://community.alfresco.com/thread/209460-dynamic-selectone-in-alfresco-share

2 ответа

Решение

Как сказал Викаш, я бы посоветовал вам создать свой собственный элемент управления формой (поместите его в src/main/amp/config/alfresco/web-extension/site-webscripts/org /alfresco /components/form/controls/mycontrol.ftl папка).

Внутри вы будете вызывать созданный вами собственный скрипт (который получит значения вашего файла). Это тривиальная часть, я не чувствую необходимости показывать вам пример.

Вы можете посмотреть на этот (упрощенный) пример для части ftl:

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

Затем вы можете использовать это следующим образом:

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

Вы можете использовать свой собственный файл ftl в качестве элемента управления формы

Укажите путь к шаблону вашего пользовательского файла ftl в форме общего доступа.

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

См. Эту документацию

Другие вопросы по тегам