2011-06-27 83 views
2

我在Struts中,我有我的网页三个文本字段2.很新,我把一个验证的数量仅在文本字段部件(0-9)。在我的validation.xml文件中,代码就像如何在Struts 2中验证数字的文本字段?

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> 

<validators> 
    <field name="disSlab.minAmt"> 

     <field-validator type="requiredstring"> 
      <message>Required</message> 
     </field-validator> 
     <field-validator type="int"> 
        <param name="min">0</param> 
        <param name="max">9</param> 
        <message>Data Not Valid</message> 
     </field-validator> 
    </field> 

    <field name="disSlab.maxAmt"> 
     <field-validator type="requiredstring" short-circuit="true"> 
      <message>Required</message> 
     </field-validator> 

    </field> 
    <field name="disSlab.schemeValue"> 
     <field-validator type="requiredstring" short-circuit="true"> 
      <message>Required</message> 
     </field-validator> 

    </field> 

</validators> 

我知道<field-validator type="int">不适用于Number Filed。但我需要提醒用户,当用户类型除了0至9任何..

能否请你帮我生根粉我应该放什么东西在申请验证,所以我可以解决我的问题。在进阶感谢。

Dhrumil沙阿

这不是解决办法,这是我的我的问题

的进一步详情参见我已经调试进行验证lib中的源代码。它生成这样的客户端查询代码..

<script type="text/javascript"> 
    function validateForm_updateSlabDataFormId() { 
     form = document.getElementById("updateSlabDataFormId"); 
     clearErrorMessages(form); 
     clearErrorLabels(form); 

     var errors = false; 
     var continueValidation = true; 
     // field name: disSlab.minAmt 
     // validator name: requiredstring 
     if (form.elements['disSlab.minAmt']) { 
      field = form.elements['disSlab.minAmt']; 
      var error = "requiredstring on amt"; 
      if (continueValidation && field.value != null && (field.value == "" || field.value.replace(/^\s+|\s+$/g, "").length == 0)) { 
       addError(field, error); 
       errors = true; 

      } 
     } 
     // field name: disSlab.minAmt 
     // validator name: required 
     if (form.elements['disSlab.minAmt']) { 
      field = form.elements['disSlab.minAmt']; 
      var error = "required on amt"; 
      if (field.value == "") { 
       addError(field, error); 
       errors = true; 

      } 
     } 
     // field name: disSlab.minAmt 
     // validator name: conversion 
     if (form.elements['disSlab.minAmt']) { 
      field = form.elements['disSlab.minAmt']; 
      var error = "Conversion needed"; 
     } 
     // field name: disSlab.minAmt 
     // validator name: int 
     if (form.elements['disSlab.minAmt']) { 
      field = form.elements['disSlab.minAmt']; 
      var error = "Data Not Valid"; 
      if (continueValidation && field.value != null) { 
       if (parseInt(field.value) < 
        0 || 
        parseInt(field.value) > 
        9) { 
        addError(field, error); 
        errors = true; 

       } 
      } 
     } 
</script> 

请参阅此代码是自动生成的。当我提交页面时,这段代码是非常好的。但它不会在页面提交之前生成..此问题仅适用于<field-validator type="conversion"> 不适用于type = required。

能否请你帮我解决这个问题..

最后我需要的是 我不想重新加载号码验证或任何其他正则表达式验证的页面。这只适用于需要验证。

+0

究竟是什么问题?它已经不工作了吗? – doctrey

+0

@doctrey - 我不相信指定最小值和最大值的int验证器可以用于String对象。 – nmc

+0

@nmc是的你是对的,但如果我没有错误的默认堆栈的拦截器验证转换后完成,所以我们已经验证了int。 – doctrey

回答

1

这不是解决办法,这是我的我的问题

的进一步详情参见我已经调试进行验证lib中的源代码。它生成这样的客户端查询代码..

<script type="text/javascript"> 
    function validateForm_updateSlabDataFormId() { 
     form = document.getElementById("updateSlabDataFormId"); 
     clearErrorMessages(form); 
     clearErrorLabels(form); 

     var errors = false; 
     var continueValidation = true; 
     // field name: disSlab.minAmt 
     // validator name: requiredstring 
     if (form.elements['disSlab.minAmt']) { 
      field = form.elements['disSlab.minAmt']; 
      var error = "requiredstring on amt"; 
      if (continueValidation && field.value != null && (field.value == "" || field.value.replace(/^\s+|\s+$/g, "").length == 0)) { 
       addError(field, error); 
       errors = true; 

      } 
     } 
     // field name: disSlab.minAmt 
     // validator name: required 
     if (form.elements['disSlab.minAmt']) { 
      field = form.elements['disSlab.minAmt']; 
      var error = "required on amt"; 
      if (field.value == "") { 
       addError(field, error); 
       errors = true; 

      } 
     } 
     // field name: disSlab.minAmt 
     // validator name: conversion 
     if (form.elements['disSlab.minAmt']) { 
      field = form.elements['disSlab.minAmt']; 
      var error = "Conversion needed"; 
     } 
     // field name: disSlab.minAmt 
     // validator name: int 
     if (form.elements['disSlab.minAmt']) { 
      field = form.elements['disSlab.minAmt']; 
      var error = "Data Not Valid"; 
      if (continueValidation && field.value != null) { 
       if (parseInt(field.value) < 
        0 || 
        parseInt(field.value) > 
        9) { 
        addError(field, error); 
        errors = true; 

       } 
      } 
     } 
</script> 

请参阅此代码是自动生成的。此代码在我提交页面时非常生气。但它没有在页面提交之前生成..此问题仅适用于

不适用于type = required。

最后我需要的是 我不想重新加载号码验证或任何其他正则表达式验证的页面。这只适用于需要验证。

------------------------------------------------------------------------------------------- 

最后我得到了我的答案

让我解释一下,我可以实现谁的解决方案

我需要的是把一个验证的文本框来验证号码只有投入。

我认为Struts2为我们提供了这个基本的验证,但我无法找到它。

所以我把一个正则表达式验证我的领域像

<field-validator type="regex" short-circuit="true"> 
    <param name="expression"><![CDATA[^[0-9]+$]]></param> 
     <message>Not Valid Number</message> 
</field-validator> 

这正常工作与Ajax的jQuery验证。 我忘了把CDATA在我的正则表达式。但现在这工作正常。

感谢您的支持。

Dhrumil Shah

+0

我认为nmc的回答是一样的。 – doctrey

1

可以使用regular expression validator相匹配的字符串只有数字。

+0

Hey nmc。感谢您的回复。但这是基本的验证类型。它不总是使用正则表达式。但仍然正则表达式提交页面,并给我错误消息在FiledError不当显示我上面的文本字段时,我点击提交按钮。你可以理解我的问题。 –

+0

@Dhrumil Shah--你在使用这个插件http://code.google.com/p/struts2-jquery/wiki/Validation吗? – nmc

+0

雅我使用的是struts2-jquery-plugin-3.0.2版本。 –