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 ) をトリガーしていることを意味します(head ファイルを参照)。したがって、いくつかの入力フィールドを追加するだけでは十分ではありません。クライアント側の JS ファイルを拡張する必要があります。

関数 onEditProfile では、Dom 要素を取得します。

しかし、それは保存された「後」の実際のフィールドを表示するためだけのものです。

form.setSubmitAsJSON(true);profile.js を見ると、フィールドを取得できる 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オブジェクトの contentmodel を新しいプロパティで拡張していないことを意味します。

于 2013-04-03T07:37:55.687 に答える