我在XPAGES上尝试了select2插件。它适用于新文档,但对于现有文档,它无法保存。我发现这个问题的根源是" XPAGES在使用$ .ajax"时不会保存现有文档。和XAgent
这是我的简单示例(test.xsp):`
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
xmlns:xc="http://www.ibm.com/xsp/custom"
xmlns:xp_1="http://www.ibm.com/xsp/coreex">
<xp:this.data>
<xp:dominoDocument var="document1" formName="Employee"
action="openDocument" computeWithForm="both">
</xp:dominoDocument>
</xp:this.data>
<xc:coreHeader theme="blue"></xc:coreHeader>
<xp:button value="Save" id="button1">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action>
<![CDATA[#{javascript:currentDocument.save();context.redirectToPage("grid.xsp");}]]>
</xp:this.action>
</xp:eventHandler>
</xp:button>
<xp:button id="button2" rendered="#{javascript:!currentDocument.isEditable()}" value="Edit">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action>
<xp:changeDocumentMode mode="toggle" var="document1"></xp:changeDocumentMode>
</xp:this.action>
</xp:eventHandler>
</xp:button>
<xp:label for="forteInputText" styleClass="control-label" value="Label"></xp:label>
<xp:div styleClass="controls" >
<xp:inputText id="txtNama" value="#{document1.Nama}"></xp:inputText>
<xp:inputText id="txtAlamat" value="#{document1.Alamat}"></xp:inputText>
</xp:div>
<xp:scriptBlock rendered="true">
<xp:this.value><![CDATA[// DECLARATION
dojo.ready(function(){
$.ajax({
url:'example.xsp'
}).done(function(data){
x$('#{id:txtNama}').val(data);
})
})]]></xp:this.value>
</xp:scriptBlock>
<xc:coreFooter></xc:coreFooter>
</xp:view>
和XAgent(example.xsp)
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" rendered="false">
<xp:this.afterRenderResponse><![CDATA[#{javascript:
try{
var externalContext = facesContext.getExternalContext();
var writer = facesContext.getResponseWriter();
var result = "ajax testing";
writer.write(result);
writer.endDocument();
} catch(e){
_dump(e);
}
}]]></xp:this.afterRenderResponse>
</xp:view>
当我打开url&#34; server / database.nsf / test.xsp&#34; 。 TxtNama将获得价值:&#34; ajax测试&#34;来自example.xsp,我保存它..可以毫无问题地保存新文档。
但是,当我打开保存的文件url =&#34; server / database.nsf / test.xsp?documentId = XXXXXXXXXXXXXX&#34;。并填写txtAlamat值并保存。无法保存txtAlamat中的任何更改。
但是如果我设置xp:scriptBlock rendered =&#34; false&#34;并尝试再次填充txtAlamat值,保存txtAlamat的更改。
这很奇怪..
答案 0 :(得分:0)
两件事:
检查您是否确实可以编辑文档并保存更改。可能是您没有足够的权限来更新它。
我测试了你的场景:打开test.xsp,创建一个文件,打开test.xsp?documentId = xxx,对该字段进行了更改并成功更新了文档。请注意,如果再次打开test.xsp?documentId = xxx,则会显示更新的值。但是如果单击“编辑”按钮,XPage将进入编辑模式,输入的值将更改回“ajax testing”,因为ajax调用会再次启动。您可能希望将代码更改为仅对新文档执行ajax调用。如果要确保保存更改,请使用Notes客户端查看文档。