我想在dijit对话框中验证,就像在带有disableClientSideValidation =“true”的简单xpage中一样。 当我在xpage显示消息中使用自定义控件但如果我放入dijit,则对话框关闭而不进行验证
我正在使用带有客户端脚本的按钮 - > dijit.byId(div的ID).show();
在div中,ID是一个带有以下代码的自定义控件:
<xp:inputText id="input1" style="width:160px;" role="button" title="used to text" required="true" disableClientSideValidation="true">
<xp:this.validators>
<xp:validateRequired><xp:this.message><![CDATA[The value is empty]]>
</xp:this.message></xp:validateRequired>
</xp:this.validators>
</xp:inputText>
<xp:messages id="messagesReq"></xp:messages>
<xp:button id="test" value="test">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
</xp:eventHandler>
/xp:button>
如何在自定义控件中提交或保存表单,但首先显示消息?
答案 0 :(得分:0)
对话框因为您正在刷新整个页面而关闭,因此dojo正在重新构建隐藏的对话框。我重新使用扩展库中的<xe:dialog>
:
<xe:dialog id="XSPdialog">
<xp:panel>
<!-- your code -->
</xp:panel>
</xe:dialog>
<xe:dialog>
构造一个iframe,以便您可以更改/验证/保存所有数据源并显示响应。另一个解决方案是将对话框内容移动到单独的XPage并在对话框中添加iframe
内容:
<div id="dojoDialog"
data-dojo-type="dijit.Dialog"
title="My Dialog Title">
<xp:panel tagName="iframe">
<xp:this.attrs>
<xp:attr name="src">
<xp:this.value><![CDATA[#{javascript: context.getUrl().toString().split(view.getPageName())[0] + "/dialogContent.xsp"}]]></xp:this.value>
</xp:attr>
</xp:this.attrs>
</xp:panel>
</div>
另一种可能性是在客户端验证您的字段。