用于打开 xe:dialog 的 xpage ssjs 代码不会打开对话框,而是将文档模式从编辑更改为读取



我的Xpage有五个部分用于工作流程。第 1 部分提交按钮工作正常。对于第二部分提交按钮,我正在调用 xe:对话框(使用 ssjs)来获取一些用户输入,它确实打开了 xe:对话框。但是原始文档现在处于阅读模式,提交按钮不可见

如果我删除第 1 节,第 2 节按钮将打开对话框,并且不会更改原始文档的文档模式。

这是带有对话框和按钮的 xpage 的示例代码。

<?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"
    dojoTheme="true"
    dojoParseOnLoad="true">
    <xp:this.resources>
        <xp:dojoModule
            name="dijit.Dialog"></xp:dojoModule>
        <xp:dojoModule
            name="dijit.form.Button"></xp:dojoModule>
        <xp:dojoModule
            name="dijit.form.TextBox"></xp:dojoModule>
    </xp:this.resources>
    <xp:br></xp:br>
    <xp:this.data>
        <xp:dominoDocument
            var="document1"
            formName="MetalWorking">
        </xp:dominoDocument>
    </xp:this.data>
    <xp:panel>
        <xp:panel>
            &#160;
            <xp:button
                value="Lab Man Approval"
                id="button4">
                <xp:this.rendered><![CDATA[#{javascript:document1.isEditable() & (document1.getItemValueDate("Section1DateCompleted")!=null) & (document1.getItemValueDate("Section2DateCompleted") == null)
}]]></xp:this.rendered>
                <xp:eventHandler
                    event="onclick"
                    submit="true"
                    refreshMode="complete"
                    immediate="false"
                    save="true">
                    <xp:this.action>
                        <xp:executeScript>
                            <xp:this.script><![CDATA[#{javascript:var d=getComponent('dialog2');
d.show();}]]></xp:this.script>
                        </xp:executeScript>
                    </xp:this.action>
                </xp:eventHandler>
            </xp:button>
            &#160; &#160;<xp:br></xp:br>
            <xe:dialog
                id="dialog2">
                <xp:panel
                    style="background-color:rgb(226,226,226)">
                    <xp:table>
                        <xp:tr>
                            <xp:td>
                                <xp:label
                                    value="Response"
                                    id="responseArea_Label1"
                                    for="responseArea1">
                                </xp:label>
                            </xp:td>
                            <xp:td>
                                <xp:inputText
                                    id="responseArea1">
                                </xp:inputText>
                            </xp:td>
                        </xp:tr>
                    </xp:table>
                </xp:panel>
            </xe:dialog>
        </xp:panel>
    </xp:panel>
    <xp:table>
        <xp:tr>
            <xp:td>
                <xp:label
                    value="Doc history:"
                    id="docHistory_Label1"
                    for="docHistory1">
                </xp:label>
            </xp:td>
            <xp:td>
                <xp:inputText
                    value="#{document1.DocHistory}"
                    id="docHistory1">
                </xp:inputText>
            </xp:td>
        </xp:tr>
    </xp:table>
</xp:view>

你确定这是因为"document1.isEditable()",而不是因为你的陈述中的所有其他部分?

如果我像那样更改您的渲染代码

<xp:this.rendered><![CDATA[#{javascript: document1.isEditable() }]]></xp:this.rendered>

该按钮几乎可见。

最新更新