使用 Struts 2 + Dojo 框架进行表单验证

Posted

技术标签:

【中文标题】使用 Struts 2 + Dojo 框架进行表单验证【英文标题】:Form validation with Struts 2 + Dojo framework 【发布时间】:2011-10-19 16:01:35 【问题描述】:

我是 Dojo 的新手,我正在尝试使用 Struts2 标记验证表单(例如本示例的最后一个:http://dojotoolkit.org/documentation/tutorials/1.6/validation/),但我不能。 使用“经典”html 表单(标签,...)一切都很好,但使用 Struts 2 标签(),“必需”验证不起作用...

这是我的代码:

    <script type="text/javascript">
        dojo.require('dojox.validate');
        dojo.require('dojox.validate.us');
        dojo.require('dojox.validate.web');

        /* basic dijit classes */
        dojo.require('dijit.form.CheckBox');
        dojo.require('dijit.form.Textarea');
        dojo.require('dijit.form.FilteringSelect');
        dojo.require('dijit.form.TextBox');
        dojo.require('dijit.form.ValidationTextBox');
        dojo.require('dijit.form.DateTextBox');
        dojo.require('dijit.form.TimeTextBox');
        dojo.require('dijit.form.Button');
        dojo.require('dijit.form.RadioButton');
        dojo.require('dijit.form.Form');
        dojo.require('dijit.form.DateTextBox');

        /* basic dojox classes */
        dojo.require('dojox.form.BusyButton');
        dojo.require('dojox.form.CheckedMultiSelect');
    </script>

<s:form dojoType="dijit.form.Form" method="post" id="toto" 
 theme="simple">
      <script type="dojo/method" event="onSubmit">
            if(this.validate()) 
               return confirm('Form is valid, press OK to submit');
             else 
               alert('Formulaire invalide');
             return false;
            
return true;
            </script>
            <table cellpadding="0" cellspacing="2">
                <tr>
                    <td valign="top"><strong>First Name*: </strong></td>
                    <td>
                        <s:textfield
                            name="email"
                            id="email"
                            placeholder="Your email" 
                            dojoType="dijit.form.ValidationTextBox" 
                            required="true"
                            missingMessage="Obligatoire !" />
                    </td>
                </tr>
            </table>

                <s:submit
                    value="Submit Form" 
                    label="Submit Form"
                    id="submitButton" 
                    dojoType="dijit.form.Button"/>
            </s:form> 

请问如何使用 struts 标签检查我的字段是否为空? 谢谢大家

【问题讨论】:

【参考方案1】:

您需要检查以确保您正在渲染的内容是 Dojo 所期望的。我不知道当前的 Dojo 验证是如何工作的,但是:

“必需”属性是&lt;s:textfield&gt; 的一个属性,它可能没有被渲染,因此对Dojo 不可用——如果Dojo 使用它来确定字段是否是必需的。

【讨论】:

嗨,Dojo 正在等待 "required" 属性,但就像你说的,这个不是由 "s:textfield" 标记呈现的,所以 Dojo 找不到他也不知道该字段是必需的。这是我的问题:我该怎么办? 我找到了我的解决方案。只需将 data-dojo-props="required : true" 作为 属性 @Vince 所以,不客气。通常一个有用的答案或解决方案会得到accepted,或者至少是一个赞成票。 不要生气,但你的帖子对我没有帮助。我知道 标签的“必需”属性,但解决方案是将其放入“data-dojo-props”属性中。但是我“接受”您的解决方案,因为您是唯一回答我的人(我不能投票,因为我没有获得 15 名声望)。谢谢你 @Vince 那么不要接受它——回答你自己的问题,然后接受它。 (尽管如果您知道所需的属性似乎 为什么 它不起作用会很明显?)

以上是关于使用 Struts 2 + Dojo 框架进行表单验证的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Struts2 框架向 Dojo 树提供 JSON 数据

(二十三)Struts2 Ajax标签

带有 DOJO 插件的 Struts 2.3.15 不起作用

Struts 2常用的Ajax标签

Dojo 插件在 Struts 2 中不起作用

结合 Struts 2 和 Dojo 标签