Xpages richtext控件不存储输入内容

Xpages richtext控件不存储输入内容,xpages,Xpages,my XPage有一个RT控件,用户可以在其中填充文本片段,并用更多文本完成内容 <xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="Body1"> <xp:this.action><![CDATA[#{javascript: var mykey = getComponent("Aufgabe1").getValue(); var bo

my XPage有一个RT控件,用户可以在其中填充文本片段,并用更多文本完成内容

<xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="Body1">
    <xp:this.action><![CDATA[#{javascript:
    var mykey = getComponent("Aufgabe1").getValue();
    var bodytxt:string = @DbLookup(@DbName(), "lookupOrdertypes",mykey,4,"[FAILSILENT]");
    if (checkContent(bodytxt)) getComponent("Body1").setValue(bodytxt);
}]]></xp:this.action>
</xp:eventHandler>
填充按钮的eventHandler:

<xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="Body1">
    <xp:this.action><![CDATA[#{javascript:
    var mykey = getComponent("Aufgabe1").getValue();
    var bodytxt:string = @DbLookup(@DbName(), "lookupOrdertypes",mykey,4,"[FAILSILENT]");
    if (checkContent(bodytxt)) getComponent("Body1").setValue(bodytxt);
}]]></xp:this.action>
</xp:eventHandler>
文本被填充,用户看到它,然后再写一些。最后,用户提交表单:但在richtext字段中,只保存填写的文本片段!如果用户不使用该按钮,但只键入文本,则文本将正确保存

<xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="Body1">
    <xp:this.action><![CDATA[#{javascript:
    var mykey = getComponent("Aufgabe1").getValue();
    var bodytxt:string = @DbLookup(@DbName(), "lookupOrdertypes",mykey,4,"[FAILSILENT]");
    if (checkContent(bodytxt)) getComponent("Body1").setValue(bodytxt);
}]]></xp:this.action>
</xp:eventHandler>
当我将richtext控件更改为多行编辑框时,一切正常

<xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="Body1">
    <xp:this.action><![CDATA[#{javascript:
    var mykey = getComponent("Aufgabe1").getValue();
    var bodytxt:string = @DbLookup(@DbName(), "lookupOrdertypes",mykey,4,"[FAILSILENT]");
    if (checkContent(bodytxt)) getComponent("Body1").setValue(bodytxt);
}]]></xp:this.action>
</xp:eventHandler>
谢谢你的帮助

<xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="Body1">
    <xp:this.action><![CDATA[#{javascript:
    var mykey = getComponent("Aufgabe1").getValue();
    var bodytxt:string = @DbLookup(@DbName(), "lookupOrdertypes",mykey,4,"[FAILSILENT]");
    if (checkContent(bodytxt)) getComponent("Body1").setValue(bodytxt);
}]]></xp:this.action>
</xp:eventHandler>

Uwe

问题在于您没有完全刷新richtext,只刷新了具有richttext组件id的textarea。但是还有另外两个组件需要刷新:inputRichText1_mod和inputRichText1_h,这是从XspInputRichText组件自动生成的两个字段

<xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="Body1">
    <xp:this.action><![CDATA[#{javascript:
    var mykey = getComponent("Aufgabe1").getValue();
    var bodytxt:string = @DbLookup(@DbName(), "lookupOrdertypes",mykey,4,"[FAILSILENT]");
    if (checkContent(bodytxt)) getComponent("Body1").setValue(bodytxt);
}]]></xp:this.action>
</xp:eventHandler>
如果您刷新了周围的元素,那么您的代码应该可以工作:

<xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="Body1">
    <xp:this.action><![CDATA[#{javascript:
    var mykey = getComponent("Aufgabe1").getValue();
    var bodytxt:string = @DbLookup(@DbName(), "lookupOrdertypes",mykey,4,"[FAILSILENT]");
    if (checkContent(bodytxt)) getComponent("Body1").setValue(bodytxt);
}]]></xp:this.action>
</xp:eventHandler>
<xp:div id="refreshMe">
   <xp:inputRichText id="Body1" value="#{document1.Body}"></xp:inputRichText>
</xp:div>
现在,请刷新div:

<xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="Body1">
    <xp:this.action><![CDATA[#{javascript:
    var mykey = getComponent("Aufgabe1").getValue();
    var bodytxt:string = @DbLookup(@DbName(), "lookupOrdertypes",mykey,4,"[FAILSILENT]");
    if (checkContent(bodytxt)) getComponent("Body1").setValue(bodytxt);
}]]></xp:this.action>
</xp:eventHandler>

问题是您没有完全刷新richtext,只有id为richttext组件的textarea。但是还有另外两个组件需要刷新:inputRichText1_mod和inputRichText1_h,这是从XspInputRichText组件自动生成的两个字段

<xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="Body1">
    <xp:this.action><![CDATA[#{javascript:
    var mykey = getComponent("Aufgabe1").getValue();
    var bodytxt:string = @DbLookup(@DbName(), "lookupOrdertypes",mykey,4,"[FAILSILENT]");
    if (checkContent(bodytxt)) getComponent("Body1").setValue(bodytxt);
}]]></xp:this.action>
</xp:eventHandler>
如果您刷新了周围的元素,那么您的代码应该可以工作:

<xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="Body1">
    <xp:this.action><![CDATA[#{javascript:
    var mykey = getComponent("Aufgabe1").getValue();
    var bodytxt:string = @DbLookup(@DbName(), "lookupOrdertypes",mykey,4,"[FAILSILENT]");
    if (checkContent(bodytxt)) getComponent("Body1").setValue(bodytxt);
}]]></xp:this.action>
</xp:eventHandler>
<xp:div id="refreshMe">
   <xp:inputRichText id="Body1" value="#{document1.Body}"></xp:inputRichText>
</xp:div>
现在,请刷新div:

<xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="Body1">
    <xp:this.action><![CDATA[#{javascript:
    var mykey = getComponent("Aufgabe1").getValue();
    var bodytxt:string = @DbLookup(@DbName(), "lookupOrdertypes",mykey,4,"[FAILSILENT]");
    if (checkContent(bodytxt)) getComponent("Body1").setValue(bodytxt);
}]]></xp:this.action>
</xp:eventHandler>