代码之家  ›  专栏  ›  技术社区  ›  Patrick Kwinten

如何定义条件xp:confirm?

  •  0
  • Patrick Kwinten  · 技术社区  · 6 年前

    我想在条件状态下使用xp:confirm操作。是否有方法计算此控件的呈现属性?

    我可以计算整个xp:eventHandler的呈现属性,但不能计算xp:actionGroup或xp:confirm的呈现属性。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Paul Stephen Withers    6 年前

    xp:confirm 只需使用以下命令将客户端JavaScript添加到按钮:

    if (!XSP.confirm("YOUR MESSAGE")){
        return false;
    }
    

    XSP.confirm() 是用于JavaScript确认的XPages包装器。最灵活的方法是在按钮的“client”选项卡上编写所需的客户端JavaScript,执行 return false 以防止按要求将按钮发送到服务器。

        2
  •  0
  •   Stanislaw Guzik    6 年前

    这是一个非常合成的代码片段,如果我正确地理解了它,如果它适合您的用例,那么您可以根据自己的需要来编写它。不是很优雅,但很管用。

    <xp:panel id="mainPanel">
        <xp:button id="myBtn1"
            value="Ask confirmation on submit">
            <xp:eventHandler event="onclick" submit="true"
                refreshMode="partial" refreshId="mainPanel">
                <xp:this.action>
                    #{javascript:
                        requestScope.put('myAnyVar', 'askConfirmation');
                    }
                </xp:this.action>
            </xp:eventHandler>
        </xp:button>
        <xp:button id="myBtn2"
            value="Dont ask confirmation on submit">
            <xp:eventHandler event="onclick" submit="true"
                refreshMode="partial" refreshId="mainPanel">
                <xp:this.action>
                    #{javascript:
                        requestScope.put('myAnyVar','dontAskConfirmation');
                    }
                </xp:this.action>
            </xp:eventHandler>
        </xp:button>
        <input type="hidden" id="doConfirm"
            value="#{requestScope.myAnyVar eq 'askConfirmation' ? '1' : '0'}">
        </input>
    </xp:panel>
    <br />
    <br />
    <xp:button id="btnSubmit"
        value="Submit">
        <xp:eventHandler event="onclick" submit="true"
            refreshMode="complete">
            <xp:this.script>
                var confirmOption = dojo.byId('doConfirm').value;
                if (confirmOption === '1') {
                    if (confirm('Proceed the submit?')) {
                        return true;
                    } else {
                        return false;
                    }
                } else {
                    return true;
                }
            </xp:this.script>
            <xp:this.action>
                #{javascript:
                    viewScope.smthSubmitted = new java.util.Date();
                }
            </xp:this.action>
        </xp:eventHandler>
    </xp:button>
    <br />
    <br />
    <xp:text value="Submit time: #{viewScope.smthSubmitted}" />