XPages:移动应用程序页面和面板中的“保存操作”按钮不会保存分配给该面板的数据源文档

XPages:移动应用程序页面和面板中的“保存操作”按钮不会保存分配给该面板的数据源文档,xpages,panel,mobile-application,xpages-ssjs,Xpages,Panel,Mobile Application,Xpages Ssjs,我正在使用Xpages扩展库构建Domino应用程序,该扩展库启用了一个带有xe:singlePageApp和更多xe:appPage的移动页面。一个xe:appPage包含一个面板,该面板的数据源是domino文档。在同一个面板中有一个提交/保存按钮,用于保存文档数据源中字段中编辑/更改的内容 由于Xomino、StackOverflow和XPages Wiki上已经发布了问题和答案(此处未提供链接,因为我还不允许发布超过2个链接)提交按钮位于面板内,数据源也在该面板内声明(在下面的代码中)“

我正在使用Xpages扩展库构建Domino应用程序,该扩展库启用了一个带有xe:singlePageApp和更多xe:appPage的移动页面。一个xe:appPage包含一个面板,该面板的数据源是domino文档。在同一个面板中有一个提交/保存按钮,用于保存文档数据源中字段中编辑/更改的内容

由于Xomino、StackOverflow和XPages Wiki上已经发布了问题和答案(此处未提供链接,因为我还不允许发布超过2个链接)提交按钮位于面板内,数据源也在该面板内声明(在下面的代码中)“内容”)

页面上的xp:inputText控件与数据源的字段具有相同的id和变量。如果我在另一个按钮中通过SSJS设置页面上的某些值,则会成功设置这些值,并且会显示一个圆形rect列表项,该列表项的可见性取决于设置的值,显示字段也发生了更改

问题:保存/提交按钮“提交以供批准”未保存对分配给面板的数据源的更改。

我还尝试了在文档数据中设置“ignoreRequestParams”=true,但在本上下文中这不是一个选项。当我尝试此操作时,初始appPage中的对应文档(其DataView元素应与文档appPage一起打开)没有加载其值-它们显示为空

你知道我在这里做错了什么,或者我可以做些什么来提交可编辑更改字段中的值(按下“请求此工具”按钮时首先可见)吗

以下是xPages/自定义控制代码:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" 
xmlns:xe="http://www.ibm.com/xsp/coreex">



    <xe:appPage id="docContent" pageName="docContent"
        resetContent="true">

        <xp:panel id="panelDocContent">
            <xp:this.data>
                <xp:dominoDocument var="docTool" formName="Tool"
                    action="editDocument" scope="request">
                </xp:dominoDocument>
            </xp:this.data>

            <xe:djxmHeading id="djxmHeading2" back="Back" style="text-align:center">

                <xe:this.moveTo><![CDATA[#{javascript:viewScope.get("pageToReturn");}]]></xe:this.moveTo>
                <xp:this.facets>
                </xp:this.facets>

                <xe:this.label><![CDATA[#{javascript:"Tool"}]]></xe:this.label>
            </xe:djxmHeading>

<!-- BUTTONS ! -->
<xp:panel id="preButtonPanel" style="font-size:8px;">.</xp:panel>

<xp:panel id="buttonPanel" style="text-align:center">
            <xp:button value="Request this Tool" id="button1" style="font-size:12pt">
                    <xp:this.rendered><![CDATA[#{javascript:_status = docTool.getDocument().getItemValueString("Status");

(_status=="Available")}]]></xp:this.rendered>
                    <xp:eventHandler event="onclick" submit="true"
                        refreshMode="complete">
                        <xp:this.action><![CDATA[#{javascript:docTool.getDocument().replaceItemValue("Status", "Requested");
docTool.getDocument().replaceItemValue("SubmissionStatus", "Not Submitted");}]]></xp:this.action>
                    </xp:eventHandler>
            </xp:button>
                <xp:button value="Submit for Approval" id="button4" style="font-size:12pt">
                    <xp:this.rendered><![CDATA[#{javascript:_status = docTool.getDocument().getItemValueString("Status");
_submissionstatus = docTool.getDocument().getItemValueString("SubmissionStatus");

(_status=="Requested") && (_submissionstatus == "Not Submitted") }]]></xp:this.rendered>

                <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
                    <xp:this.action>

                        <xp:actionGroup>




                            <xp:executeScript>
                                <xp:this.script><![CDATA[#{javascript:if (docTool.isEditable()) {
         docTool.save();
         sessionScope.msg="Data source docTool saved.";
        _dump(sessionScope);
} else {
         sessionScope.msg= "Document not in edit mode";
}
_dump(sessionScope);
context.redirectToPage("#viewPage");


}]]></xp:this.script>
                            </xp:executeScript>
                        </xp:actionGroup>
                    </xp:this.action></xp:eventHandler></xp:button>



                </xp:panel>

                <xp:panel id="panelPostButtons" style="font-size:8px;">.</xp:panel>

    <!-- END OF BUTTONS -->

            <xe:djxmRoundRectList id="djxmRoundRectList2">
                <xp:messages id="errormessages1"></xp:messages>
            </xe:djxmRoundRectList>
            <xe:djxmRoundRectList id="djxmRoundRectList1">

                <xp:table style="width:100.0%">
                    <xp:tr>
                        <xp:td style="font-weight:bold">
                            Tool information
                        </xp:td>
                    </xp:tr>
                </xp:table>

                <xp:table style="width:100.0%">
                    <xp:tr>
                        <xp:td style="width:22.0%">Type</xp:td>
                        <xp:td style="width:69.0%">
                            <xp:label id="dspType">
                                <xp:this.value><![CDATA[#{javascript:docTool.getDocument().getItemValueString("ToolType");}]]></xp:this.value>
                            </xp:label>
                        </xp:td>
                    </xp:tr>
                    <xp:tr>
                        <xp:td style="width:22.0%">Part No.</xp:td>
                        <xp:td style="width:69.0%">
                            <xp:label id="dspPartNo">
                                <xp:this.value><![CDATA[#{javascript:docTool.getDocument().getItemValueString("PartNumber");}]]></xp:this.value>
                            </xp:label>
                        </xp:td>
                    </xp:tr>






                    <xp:tr>
                        <xp:td>Status</xp:td>
                        <xp:td>
                            <xp:label id="dspStatus">
                                <xp:this.value><![CDATA[#{javascript:docTool.getDocument().getItemValueString("Status");}]]></xp:this.value>
                            </xp:label>
                        </xp:td>
                    </xp:tr>
                    <xp:tr>
                        <xp:td>Submission status</xp:td>
                        <xp:td><xp:label id="dspSubmissionStatus">
                                <xp:this.value><![CDATA[#{javascript:docTool.getDocument().getItemValueString("SubmissionStatus");}]]></xp:this.value>
                            </xp:label></xp:td>
                    </xp:tr>
                </xp:table>
            </xe:djxmRoundRectList>


            <xe:djxmRoundRectList id="djxmRoundRectList3">


                <xe:this.rendered><![CDATA[#{javascript:_status = docTool.getDocument().getItemValueString("Status");
_submissionstatus = docTool.getDocument().getItemValueString("SubmissionStatus");

(_status!="Available") && (_submissionstatus != "") }]]></xe:this.rendered><xp:table style="width:100.0%">
                    <xp:tr>
                        <xp:td
                            style="font-weight:bold;color:rgb(255,0,0)">
                            Please enter following mandatory
                            information:
                        </xp:td>
                    </xp:tr>
                    <xp:tr>
                        <xp:td style="font-weight:bold">
                            Shipping Address
                        </xp:td>
                    </xp:tr>
                </xp:table>

                <xp:table style="width:100.0%">
                    <xp:tr>

                        <xp:td style="width:22%">
                            Company data
                            <xp:span
                                style="font-weight:bold;color:rgb(255,0,0)">
                                *
                            </xp:span>
                        </xp:td>
                        <xp:td style="width:69.0%">

                            <xp:inputText id="Company" style="width:99%"
                                value="#{docTool.Company}">
                            </xp:inputText>
                        </xp:td>
                    </xp:tr>
                    <xp:tr>

                        <xp:td style="width:22%">
                            Customer data
                            <xp:span
                                style="font-weight:bold;color:rgb(255,0,0)">
                                *
                            </xp:span>
                        </xp:td>
                        <xp:td style="width:69.0%">

                            <xp:inputText id="CustomerData"
                                style="width:99%" value="#{docTool.CustomerData}">
                            </xp:inputText>
                        </xp:td>
                    </xp:tr>
                    <xp:tr>

                        <xp:td style="width:22%">
                            Demo reason
                            <xp:span
                                style="color:rgb(255,0,0);font-weight:bold">
                                *
                            </xp:span>
                        </xp:td>
                        <xp:td style="width:69.0%">
                            <xp:inputText id="DemoReason"
                                style="width:99%" value="#{docTool.DemoReason}">
                            </xp:inputText>

                        </xp:td>
                    </xp:tr>


                </xp:table>

            </xe:djxmRoundRectList>


        </xp:panel>

        </xe:appPage>


</xp:view>

.
.
工具信息
类型
零件号。
地位
提交状态
请输入以下必填项
资料:
送货地址
公司数据
*
客户数据
*
演示理由
*
这里还有一个指向整个应用程序的ZIP的链接,用于获得对依赖关系的完整而直接的了解

我会在那里保存2-3个月

在这段代码中,我还尝试了一个简单的“保存文档”操作,并指出了相同的数据源


我已经花了很多时间来解决这个问题,现在我陷入了困境。任何帮助都将不胜感激。

这不是回答,而是试图提供一些信息,我需要比允许的评论更多的空间。 我下载并玩了一段时间,但我不确定这是怎么回事

你的save按钮有点奇怪。我添加了一个print语句,无法打印任何内容。由于现在的原因,它在一个action组中,因此你可能想摆脱它,只需重做按钮。因为只有一个操作,我不会使用简单的action-execute脚本-我只需通过脚本编辑器键入代码。完成后g我得到了mu print语句,看起来它保存了,但每次保存都会导致
<xp:button value="New Save" id="button5">
                    <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
                        <xp:this.action><![CDATA[#{javascript:print("CHECKING")
if (docTool.isEditable()) {
print("Editable")
         docTool.save();
         print("Data source docTool saved.");

} else {
    print("NOT EDITABLE")
        print("Document not in edit mode");
}

context.redirectToPage("#viewPage");


}]]></xp:this.action>
                    </xp:eventHandler></xp:button>
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex">

    <xe:appPage id="docContent" pageName="docContent"
        resetContent="true">

        <xp:panel id="panelDocContent">
            <xp:this.data>
                <xp:dominoDocument var="docTool" formName="Tool"
                    action="editDocument" scope="request">
                </xp:dominoDocument>
            </xp:this.data>

            <xe:djxmHeading id="djxmHeading2" back="Back"
                style="text-align:center">

                <xe:this.moveTo><![CDATA[#{javascript:viewScope.get("pageToReturn");}]]></xe:this.moveTo>
                <xp:this.facets>
                </xp:this.facets>

                <xe:this.label><![CDATA[#{javascript:"Tool"}]]></xe:this.label>
            </xe:djxmHeading>

            <!-- BUTTONS ! -->
            <xp:panel id="preButtonPanel" style="font-size:8px;">.</xp:panel>

            <xp:panel id="buttonPanel" style="text-align:center">
                <xp:button value="Request this Tool" id="buttonRequest">
                    <xp:this.rendered><![CDATA[#{javascript:_status = docTool.getDocument().getItemValueString("Status");

(_status=="Available")}]]></xp:this.rendered>
                    <xp:this.style><![CDATA[#{javascript:_status = docTool.getDocument().getItemValueString("Status");

var display = "none";
if(_status=="Available"){
    display = "inline-block";
} 

"font-size:12pt;display:"+display;}]]></xp:this.style>
                    <xp:eventHandler event="onclick" submit="true"
                        refreshMode="partial" refreshId="djxmRoundRectListDisplayFields">
                        <xp:this.action><![CDATA[#{javascript:docTool.getDocument().replaceItemValue("Status", "Requested");
docTool.getDocument().replaceItemValue("SubmissionStatus", "Not Submitted");}]]></xp:this.action>
                        <xp:this.onComplete>
                    <![CDATA[var buttonSubmit = "#{id:buttonSubmit}";
document.getElementById(buttonSubmit).style.display = "inline-block";

var buttonRequest = "#{id:buttonRequest}";
document.getElementById(buttonRequest).style.display = "none";

var editablefields_id = "#{id:djxmRoundRectListEditableFields}";
document.getElementById(editablefields_id).style.display = "block";]]></xp:this.onComplete>
                    </xp:eventHandler>
                </xp:button>

                <xp:button value="Submit for Approval" id="buttonSubmit">

                    <xp:this.style><![CDATA[#{javascript:_status = docTool.getDocument().getItemValueString("Status");
_submissionstatus = docTool.getDocument().getItemValueString("SubmissionStatus");

var display = "none";
if((_status=="Requested") && (_submissionstatus == "Not Submitted")){
    display = "inline-block";
} 

"font-size:12pt;display:"+display;}]]></xp:this.style>


                    <xp:eventHandler event="onclick" submit="true"
                        refreshMode="complete">
                        <xp:this.action><![CDATA[#{javascript:if (docTool.isEditable()) {
         print("Data source docTool saved.");
         docTool.replaceItemValue("SubmissionStatus", "Submitted");
         docTool.replaceItemValue("Status", "Requested");
         docTool.save();
} else {
        print("Document not in edit mode");
}
context.reloadPage();}]]></xp:this.action>


                    </xp:eventHandler>
                </xp:button>

            </xp:panel>

            <xp:panel id="panelPostButtons" style="font-size:8px;">.</xp:panel>

            <!-- END OF BUTTONS -->


            <xe:djxmRoundRectList id="djxmRoundRectListDisplayFields">


                <xp:table style="width:100.0%">
                    <xp:tr>
                        <xp:td style="font-weight:bold">
                            Tool information
                        </xp:td>
                    </xp:tr>
                </xp:table>

                <xp:table style="width:100.0%">
                    <xp:tr>
                        <xp:td style="width:22.0%">Type</xp:td>
                        <xp:td style="width:69.0%">
                            <xp:label id="dspType">
                                <xp:this.value><![CDATA[#{javascript:docTool.getDocument().getItemValueString("ToolType");}]]></xp:this.value>
                            </xp:label>
                        </xp:td>
                    </xp:tr>
                    <xp:tr>
                        <xp:td style="width:22.0%">Part No.</xp:td>
                        <xp:td style="width:69.0%">
                            <xp:label id="dspPartNo">
                                <xp:this.value><![CDATA[#{javascript:docTool.getDocument().getItemValueString("PartNumber");}]]></xp:this.value>
                            </xp:label>
                        </xp:td>
                    </xp:tr>

                    <xp:tr>
                        <xp:td>Status</xp:td>
                        <xp:td>
                            <xp:label id="dspStatus">
                                <xp:this.value><![CDATA[#{javascript:docTool.getDocument().getItemValueString("Status");}]]></xp:this.value>
                            </xp:label>
                        </xp:td>
                    </xp:tr>
                    <xp:tr>
                        <xp:td>Submission status</xp:td>
                        <xp:td>
                            <xp:label id="dspSubmissionStatus">
                                <xp:this.value><![CDATA[#{javascript:docTool.getDocument().getItemValueString("SubmissionStatus");}]]></xp:this.value>
                            </xp:label>
                        </xp:td>
                    </xp:tr>

                </xp:table>
            </xe:djxmRoundRectList>



            <xe:djxmRoundRectList id="djxmRoundRectListEditableFields">



                <xe:this.style><![CDATA[#{javascript:_status = docTool.getDocument().getItemValueString("Status");
_submissionstatus = docTool.getDocument().getItemValueString("SubmissionStatus");

var display = "none";
if((_status!="Available") && (_submissionstatus != "")){
    display = "block"
} 

"display:"+display;}]]></xe:this.style>
                <xp:table style="width:100.0%">
                    <xp:tr>
                        <xp:td
                            style="font-weight:bold;color:rgb(255,0,0)">
                            Please enter following mandatory
                            information:
                        </xp:td>
                    </xp:tr>
                    <xp:tr>
                        <xp:td style="font-weight:bold">
                            Shipping Address
                        </xp:td>
                    </xp:tr>
                </xp:table>

                <xp:table style="width:100.0%">
                    <xp:tr>

                        <xp:td style="width:22%">
                            Company data
                            <xp:span
                                style="font-weight:bold;color:rgb(255,0,0)">
                                *
                            </xp:span>
                        </xp:td>
                        <xp:td style="width:69.0%">

                            <xp:inputText id="Company" style="width:99%"
                                value="#{docTool.Company}">
                            </xp:inputText>
                        </xp:td>
                    </xp:tr>
                    <xp:tr>

                        <xp:td style="width:22%">
                            Customer data
                            <xp:span
                                style="font-weight:bold;color:rgb(255,0,0)">
                                *
                            </xp:span>
                        </xp:td>
                        <xp:td style="width:69.0%">

                            <xp:inputText id="CustomerData"
                                style="width:99%" value="#{docTool.CustomerData}">
                            </xp:inputText>
                        </xp:td>
                    </xp:tr>
                    <xp:tr>

                        <xp:td style="width:22%">
                            Demo reason
                            <xp:span
                                style="color:rgb(255,0,0);font-weight:bold">
                                *
                            </xp:span>
                        </xp:td>
                        <xp:td style="width:69.0%">
                            <xp:inputText id="DemoReason"
                                style="width:99%" value="#{docTool.DemoReason}">
                            </xp:inputText>

                        </xp:td>
                    </xp:tr>


                </xp:table>

            </xe:djxmRoundRectList>


        </xp:panel>

        </xe:appPage>

</xp:view>