在dojo对话框中使用简单的xpage等消息进行验证

时间:2014-01-15 16:10:20

标签: dojo xpages

我想在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> 

如何在自定义控件中提交或保存表单,但首先显示消息?

1 个答案:

答案 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>

另一种可能性是在客户端验证您的字段。