使用$ .ajax时,XPAGES不会保存现有文档

时间:2014-06-10 06:41:33

标签: jquery ajax xpages

我在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的更改。

这很奇怪..

1 个答案:

答案 0 :(得分:0)

两件事:

  • 检查您是否确实可以编辑文档并保存更改。可能是您没有足够的权限来更新它。

  • 我测试了你的场景:打开test.xsp,创建一个文件,打开test.xsp?documentId = xxx,对该字段进行了更改并成功更新了文档。请注意,如果再次打开test.xsp?documentId = xxx,则会显示更新的值。但是如果单击“编辑”按钮,XPage将进入编辑模式,输入的值将更改回“ajax testing”,因为ajax调用会再次启动。您可能希望将代码更改为仅对新文档执行ajax调用。如果要确保保存更改,请使用Notes客户端查看文档。