我有一个动作,显示某个用户输入的表单。输入是纯文本字段。我想知道如何预先填写输入字段。
我发现的所有教程和博客文章都很老,所有这些都只考虑了一个字段。我的理解是,我需要一个自定义的.ftl,其中包含对Web脚本的调用。
<field id="myprop">
<control template="/org/alfresco/components/form/controls/mycustomfield.ftl"/>
</field>
我的问题是我最终会对同一个网页脚本进行至少六次调用。因为那是我目前在表单中的字段数。
答案 0 :(得分:2)
嗯,我想它也可以通过使用表单过滤器来实现。也许不是最好的解决方案,但它应该完成工作。 https://wiki.alfresco.com/wiki/Forms_Developer_Guide#Form_Filter
答案 1 :(得分:1)
只有一种更好的方式......您不需要使用共享表单引擎。看看&#34;创建网站&#34;对话框,此表单不使用共享表单引擎
您需要创建自定义共享组件,该组件将返回带有填充参数的表单,并在单击操作时执行的前端js中初始化此表单。
您可以通过以下方式将新组件添加到共享:
1)在web-extension / site-webscripts / com / pizdez / form中创建新的描述符my-form.get.desc.xml
<webscript>
<shortname>my-form</shortname>
<description>Get HTML form</description>
<url>/pizdec/components/form</url>
</webscript>
2)在同一个文件夹中创建新控制器my-form.get.js,您可以在该文件夹中调用alfresco以获取所有需要的信息
var connector = remote.connect("alfresco");
var response = connector.get("/my/alfresco/webscript");
if (response.status == 200)
{
// Create javascript objects from the repo response
var obj = eval('(' + response + ')');
if (obj)
{
model.param1 = obj.param1;
}
}
3)在同一个文件夹中创建ftl模板my-form.get.html.ftl
<@markup id="css" >
<#-- CSS Dependencies -->
<@link href="${url.context}/res/components/form/my.css" />
</@>
<@markup id="js">
<@script src="${url.context}/res/components/form/my.js" />
</@>
<@markup id="widgets">
<@createWidgets/>
</@>
<@markup id="html">
<@uniqueIdDiv>
<#assign el=args.htmlid?html>
<div id="${el}-dialog">
<div class="hd">TITLE</div>
<div class="bd">
<form id="${el}-form" method="POST" action="">
<div class="yui-gd">
<div class="yui-u first"><label for="${el}-title">Title:</label></div>
<div class="yui-u"><input id="${el}-title" type="text" name="title" tabindex="0" maxlength="255"/> *
</div>
</div>
<div class="yui-gd">
<div class="yui-u first"><label for="${el}-param1">Param1:</label></div>
<div class="yui-u"><input id="${el}-param1" type="text" name="title" tabindex="0" maxlength="255" value="${param1}"/> *
</div>
</div>
<div class="bdft">
<input type="submit" id="${el}-ok-button" value="${msg("button.ok")}" tabindex="0"/>
<input type="button" id="${el}-cancel-button" value="${msg("button.cancel")}" tabindex="0"/>
</div>
</form>
</div>
</div>
</@>
</@>
4)之后你需要从ui js
获得这个组件 var myForm = new Alfresco.module.SimpleDialog(this.id + "-dialog");
myForm.setOptions(
{
width: "50em",
templateUrl: Alfresco.constants.URL_SERVICECONTEXT + "/pizdec/components/form",
actionUrl: null,
destroyOnHide: true,
doBeforeDialogShow:
{
fn: doBeforeDialogShow,
scope: this
},
onSuccess:
{
fn: function (response)
{
},
scope: this
},
onFailure:
{
fn: function(response)
{
},
scope: this
}
}).show();
我只想告诉你研究的方向