2013-06-04 42 views
0

動作映射Struts 2的JSON驗證返回錯誤的Json時驗證正確

<action name="test" class="com.val.Test" > 
     <result type="stream"> 
      <param name="contentType">text/html</param> 
      <param name="inputName">inputStream</param> 
     </result> 
     <interceptor-ref name="jsonValidationWorkflowStack"> 
     </interceptor-ref> 
    </action> 

試驗的validation.xml

<validators> 
<field name="name"> 
    <field-validator type="required" > 
     <message>You must select a name</message> 
    </field-validator> 
</field> 
</validators> 

當我請求/test?name=21&struts.enableJSONValidation=true

得到的迴應

{ "fieldErrors": {"name":["You must select a name"]}} 
+0

你是否有'name'變量的getter/setter? –

+0

謝謝Aleksandr M.當我將字段放入行爲並寫入getter和setters時,它正在工作。但是當行爲是模型驅動時它不起作用。 – Sagar

回答

0

您必須使用RequiredString驗證程序而不是必需的驗證程序

RequiredString是文本僅領域,需要的是對所有其他領域

<validators> 
<field name="name"> 
    <field-validator type="requiredstring" > 
     <message>You must select a name</message> 
    </field-validator> 
</field> 
</validators> 

Link to the official documentation

RequiredStringValidator檢查一個字符串字段不爲null,並且具有 一個長度> 0(即它不是「」)。 「trim」參數確定 是否會在 執行長度檢查之前對該字符串進行{@link String#trim()trim}。如果未指定,則字符串將被修整爲 。

+0

這不工作測試?name = 21&struts.enableJSONValidation = true – Sagar

+0

你是什麼意思與「不工作」?你有什麼異常?你可以發佈行動代碼(通過編輯你的答案)? –

+0

我得到這個{「fieldErrors」:{「name」:[「你必須選擇一個名字」]}} 即使我發送名稱= someText – Sagar