Alfresco Forms Service 无法正常工作。
看起来基本的表单功能不会将表单配置 ( control-param name="nameHere"
) 传递给 webscript。
我一步一步地重现它。
创建 Freemarker 模板并根据 /share 项目下的文档进行注册。组件渲染并显示成功。一切正常。
根据 wiki Forms page 上的文档创建一个表单。在目录中注册它
<TOMCAT_INST/shared/classes/alfresco/web- extension/myclok-form-config.xml>
并以这种方式将其传递给加载:<bean id="sampleShareConfig" class="org.springframework.extensions.config.ConfigBootstrap" init-method="register"> <property name="configService" ref="web.config" /> <property name="configs"> <list> <value>classpath:alfresco/web-extension/myclok-form-config.xml</value> </list> </property> </bean> <!-- ... share/WEB-INF/classes/org/springframework/extensions/surf/bootstrap/forms-bootstrap-context.xml -->
表格实例:
<config>
<forms>
<form id="myclok">
<view-form template="/org/alfresco/components/myclok/myclok.get.html.ftl" />
<edit-form template="/org/alfresco/components/myclok/myclok.get.html.ftl" />
<create-form template="/org/alfresco/components/myclok/myclok.get.html.ftl" />
<field-visibility>
<show id="currentPath" />
</field-visibility>
<appearance>
<field id="currentPath">
<control name="currentPath" template="/org/alfresco/components/myclok/myclok.get.html.ftl">
<control-param name="currentPath">sampleData1</control-param>
</control>
</field>
<control name="currentPath" template="/org/alfresco/components/myclok/myclok.get.html.ftl">
<control-param name="currentPath">sampleData2</control-param>
</control>
</appearance>
</form>
</forms>
</config>
在官方文档中是这样写的:
如果表单元素存在于没有评估器的配置元素中,并且始终找到表单的条件,如果您希望某个字段出现在应用程序的每个表单上,这将很有用。
所以,我在 myclok-form-config.xml 文件中指定了它,但是这种方法没有给出任何结果。因此,当通过以下 URL < http://localhost:8080/share/page/site/wcmqs/myclok
> 加载具有此类对参数的引用的组件时,Alfresco 将失败并出现异常:
Exception: freemarker.core.InvalidReferenceException - Expression field is undefined on line 6, column 6 in org/alfresco/components/myclok/myclok.get.html.ftl.
freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:125)
freemarker.core.TemplateObject.invalidTypeException(TemplateObject.java:135)
freemarker.core.Dot._getAsTemplateModel(Dot.java:78)
换句话说,不可能currentPath
接收FormConfigs
. 因此,FormsService / ConfigService 的最小功能不起作用。
<#if field.control.params.currentPath??>
<#assign path=field.control.params.currentPath>
<#else>
<#assign path="someOtherDataValue">
</#if>
有谁知道如何解决它或者可以演示一个工作示例?
PS: 附上所有上述表单FormService
和webscript组件的配置。用于快速安装的 .AMP 文件仅用于调用以下命令:
java -jar alfresco-mmt.jar install myclokStubFormComponent.amp ../tomcat/webapps/share.war