2011-06-27 72 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版本。 –