我在露天使用共享表单并尝试读取勾选复选框的值并检查单选按钮形成表单。我使用这些输入控件扩展了用户创建和userprofile表单,到目前为止,我一直未能成功读取所述控件的文本值。下面是一段代码:
<div class="row">
<span class="label"><input id="${el}-input-spokenEnglish" type="checkbox" name="spokenLanguages" value="${msg("label.anglais"!"")?html}" /> ${msg("label.anglais")}</span>
<span class="label"><input id="${el}-input-spokenSpanish" type="checkbox" name="spokenLanguages" value="${msg("label.espagnol"!"")?html}" /> ${msg("label.espagnol")}</span>
<span class="label"><input id="${el}-input-spokenGerman" type="checkbox" name="spokenLanguages" value="${msg("label.allemand"!"")?html}" /> ${msg("label.allemand")}</span>
<span class="label"><input id="${el}-input-spokenChinese" type="checkbox" name="spokenLanguages" value="${msg("label.chinois"!"")?html}" /> ${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>
不幸的是,到目前为止我什么都没有得到任何回报,很高兴能够对这一点有所了解。现在
答案 0 :(得分: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元素。
但这仅仅是为了在'它被保存之后'显示实际的fiels。
在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 对象的内容模型。