2

我正在露天使用共享表单,并尝试从表单中读取勾选的复选框和选中的单选按钮的值。我使用这些输入控件扩展了用户创建和用户配置文件表单,但到目前为止,我未能成功读取所述控件的文本值。下面是一段代码:

  <div class="row">
    <span class="label"><input id="${el}-input-spokenEnglish" type="checkbox" name="spokenLanguages" value="${msg("label.anglais"!"")?html}" />&nbsp;${msg("label.anglais")}</span>
    <span class="label"><input id="${el}-input-spokenSpanish" type="checkbox" name="spokenLanguages" value="${msg("label.espagnol"!"")?html}" />&nbsp;${msg("label.espagnol")}</span>
    <span class="label"><input id="${el}-input-spokenGerman" type="checkbox" name="spokenLanguages" value="${msg("label.allemand"!"")?html}" />&nbsp;${msg("label.allemand")}</span>
    <span class="label"><input id="${el}-input-spokenChinese" type="checkbox" name="spokenLanguages" value="${msg("label.chinois"!"")?html}" />&nbsp;${msg("label.chinois")}</span>
    <br/>
        <span class="label">${msg("label.otherLanguages")} : </span>
        <span class="input"><input id="${el}-input-spokenLanguages" type="text" size="30" maxlength="256" value="" <@immutablefield field="spokenLanugages" /> /> </span>

 </div>

不幸的是,到目前为止,我从返回的任何东西中一无所获,并且很高兴对此有所了解。

4

1 回答 1

4

如果您查看userprofile.get.html.ftl,您将看到以下代码段:

    <script type="text/javascript">//<![CDATA[
   var userProfile = new Alfresco.UserProfile("${args.htmlid}").setOptions(
   {

这意味着它触发了来自 Alfresco 的客户端 JS 文件,在本例中为profile.js(参见头文件)。所以仅仅添加一些输入字段是不够的。您需要扩展客户端 JS 文件。

在 onEditProfile 函数中,它获取 Dom 元素。

但这只是为了显示“保存后”的实际字段。

在 profile.js 中,您将看到:form.setSubmitAsJSON(true);您有一个 json 对象,您可以从中获取字段。

userprofile.post.json.ftl中,它在 user.properties 上做了一个循环:

for (var i=0; i<names.length(); i++)
      {
         var field = names.get(i);

         // look and set simple text input values
         var index = field.indexOf("-input-");
         if (index != -1)
         {
            user.properties[field.substring(index + 7)] = json.get(field);
         }
         // apply person description content field
         else if (field.indexOf("-text-biography") != -1)
         {
            user.properties["persondescription"] = json.get(field);
         }
      }
      user.save();

这可能意味着您尚未使用新属性扩展cm:person对象的内容模型。

于 2013-04-03T07:37:55.687 回答