我有以下代码,应该弹出一个对话框,让用户通过按一个按钮选择两个选项之一。不幸的是,它没有显示。过去的评论是“Y”,但getComponent行不会触发对话框。我做错了什么?
<xp:button styleClass="btn btn-primary" value="Un-Cancel" id="button28">
<xp:this.rendered><![CDATA[#{javascript:GASODIDoc.getItemValueString("Status") == "Cancelled"}]]></xp:this.rendered>
<xp:eventHandler event="onclick" submit="true" refreshMode="norefresh" disableValidators="true">
<xp:this.action><![CDATA[#{javascript:
if (GASODIDoc.getItemValueString("Past Reviews") == "Y"){
getComponent('UnCancelDocument').show();
}
GASODIDoc.replaceItemValue("Status", sessionScope.status);
GASODIDoc.save();
context.redirectToPage("index.xsp")}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
这是对话框
<xe:dialog id="UnCancelDocument" styleClass="dialogForm">
<xp:panel>
<xp:panel styleClass="dialogRow">
<xp:label
value="Do you want to return this GASODI to Draft or Document Generation status?">
</xp:label>
</xp:panel>
</xp:panel>
<!-- Save Button -->
<xp:panel styleClass="dialogActions">
<xp:button value="Return to Draft" styleClass="btn btn-primary"
id="button51">
<xp:eventHandler event="onclick" submit="false"
immediate="true" save="false" disableValidators="true">
<xp:this.script><![CDATA[sessionScope.status = "Draft";
XSP.closeDialog('#{id:UnCancelDocument}')]]></xp:this.script>
</xp:eventHandler>
</xp:button>
<!-- Cancel Button -->
<xp:button value="Return to Document Generation"
styleClass="btn btn-primary" id="button52">
<xp:eventHandler event="onclick" submit="false"
immediate="true" disableValidators="true">
<xp:this.script><![CDATA[sessionScope.status = "Document Generation";
XSP.closeDialog('#{id:UnCancelDocument}')]]></xp:this.script>
</xp:eventHandler>
</xp:button>
</xp:panel>
</xe:dialog>
答案 0 :(得分:1)
行为符合预期。代码实际运行并“显示”您的对话框,然后继续执行重定向的其余代码。换句话说,该对话框不会阻止其余代码运行。
您需要将其余逻辑移动到用户在对话框中单击的按钮,作为关闭对话框的一部分。