寻找xpage上签名按钮的最佳方法

时间:2018-12-11 21:42:31

标签: xpages

我需要一个简单的按钮,用户单击该按钮即可注销文档。每个文档只有一个签名者,但是单击它们时,会将其名称和日期放在两个可见字段中,并更改状态字段。

什么是最好的方法?这可能很简单,但是由于某种原因我无法正常工作。

这一次他们被迫登录。

谢谢。

马特

3 个答案:

答案 0 :(得分:1)

尝试以下操作:

    <?xml version="1.0" encoding="UTF-8"?>
    <xp:view xmlns:xp="http://www.ibm.com/xsp/core">
        <xp:this.data>
            <xp:dominoDocument var="document1" formName="test"></xp:dominoDocument>
        </xp:this.data>
        <xp:panel id="panelMain">
            <xp:table>
                <xp:tr>
                    <xp:td colspan="2">
                        <xp:label value="Main Form" id="label1"></xp:label>
                    </xp:td>
                </xp:tr>
                <xp:tr>
                    <xp:td style="width:100.0px">
                        <xp:label value="Now" id="label2"></xp:label>
                    </xp:td>
                    <xp:td>
                        <xp:text escape="true" id="computedField1" value="${javascript:return @Now();}">
                            <xp:this.converter>
                                <xp:convertDateTime type="both"></xp:convertDateTime>
                            </xp:this.converter>
                        </xp:text>
                    </xp:td>
                </xp:tr>
            </xp:table>
        </xp:panel>
        <xp:panel id="panelSignature" style="background-color:rgb(192,192,192)">
            <xp:button value="I Agree" id="button1">
                <xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="SignatureTable">
                    <xp:this.action><![CDATA[#{javascript:
    document1.replaceItemValue("SignedDate",@Now());
    document1.replaceItemValue("SignedBy",userBean.getDisplayName());}]]></xp:this.action>
                </xp:eventHandler>
            </xp:button>
            <xp:table id="SignatureTable">
                <xp:tr>
                    <xp:td colspan="2">
                        <xp:label value="SignatureTable" id="label3"></xp:label>
                    </xp:td>
                </xp:tr>
                <xp:tr>
                    <xp:td style="width:100.0px">
                        <xp:label value="SignedBy" id="label6"></xp:label>
                    </xp:td>
                    <xp:td>
                        <xp:inputText id="computedField4" value="#{document1.SignedBy}" readonly="true"></xp:inputText>
                    </xp:td>
                </xp:tr>
                <xp:tr>
                    <xp:td style="width:100.0px">
                        <xp:label value="SignedDate" id="label5"></xp:label>
                    </xp:td>
                    <xp:td>
                        <xp:inputText id="computedField3" value="#{document1.SignedDate}" readonly="true">
                            <xp:this.converter>
                                <xp:convertDateTime type="both"></xp:convertDateTime>
                            </xp:this.converter>
                        </xp:inputText>
                    </xp:td>
                </xp:tr>
            </xp:table>
        </xp:panel>
    </xp:view>

答案 1 :(得分:0)

以此判断“此时他们已被迫登录”。您的问题出在您的ACL中。似乎,您允许匿名读取文档,但是在您要保存该文档的那一刻,ACL不允许匿名用户这样做,因此Domino要求提供其身份。

将匿名访问设置为“无访问权限”。

答案 2 :(得分:0)

这是一个按钮,但是如果用户未登录并且没有匿名编辑访问权限,则将显示一个登录对话框。对于签名功能,我假设用户必须登录才能签名。 document1是要签名的Xpage数据文档。

    <xp:button
        value="Sign"
        id="button1"
        styleClass="btn btn-primary">
        <xp:eventHandler
            event="onclick"
            submit="true"
            refreshMode="complete">
                <xp:this.action>
                    <xp:executeScript>
                        <xp:this.script><![CDATA[#{javascript:
                        document1.appendItemValue("SignerName", session.getEffectiveUsername();
                        document1.document1("SignedDate",       session.createDateTime(@Now()));
                        document1.save();                                       
                    }]]></xp:this.script>
                </xp:executeScript>
            </xp:this.action>
        </xp:eventHandler>
    </xp:button>

如果您需要在不登录的情况下更新文档,则必须在按钮中使用sessionAsSigner获取文档,然后再进行更新。