2012-06-30 188 views
0

我是Struts2的新成員。我想用一個簡單的「註冊」表單來使用驗證框架。這裏是我的JSP頁面表單元素;Struts2驗證框架不驗證字段

<s:form action="register"> 
      <s:textfield name="name" label="Name" /> 
      <s:textfield name="age" label="Age" /> 
      <s:textfield name="email" label="email"/> 
      <s:submit value="Register" /> 
     </s:form> 
validation error ? = <s:actionerror /><br/> 
     ---Action Message--- <s:actionmessage/> 

這裏是struts2.xml文件;

<!DOCTYPE struts PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
"http://struts.apache.org/dtds/struts-2.0.dtd"> 

<struts> 
     <package name="default" extends="struts-default">   
     <action name="register" 
       class="com.action.RegisterAction"> 
       <result name="success">home.jsp</result>  
       <result name="input">index.jsp</result> 
       </action>  
     </package> 
</struts> 

RegisterAction類有

  • 字符串名稱;
  • int age;
  • 字符串電子郵件;變量與getter和setters。而它的execute()只返回SUCCESS

對於這些字段驗證下面的驗證XML文件中,現在只有一個字段檢查。驗證文件的名稱是RegisterAction-validation.xml

<!DOCTYPE struts PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
"http://struts.apache.org/dtds/struts-2.0.dtd"> 

<!-- Author: Aash -->  
<validators>  
    <field name="name"> 
     <field-validator type="requiredstring"> 
      <param name="trim">true</param> 
      <message>name is required.. :) </message> 
     </field-validator> 
    </field>  
</validators> 

下面是項目結構enter image description here

請任何一個讓我知道我怎麼能想出這個。提前致謝。

新添加:根據struts.xml中,如果有錯誤,(確認說,什麼是錯的),頁面應該被重定向到的index.jsp,但沒事的時候給出了字段「名稱」,仍然會轉到home.jsp。

一個發現的解決方案
我加入的validation.xml
!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
但它顯示在表格的頂部,我不知道爲什麼沒有打印爲actionError。我如何得到它打印在我想要查看的地方(例如:表單底部)?

+0

您可能需要提供更多詳細信息。考慮把你的項目放在github上,這樣我們可以看看;沒有太多的想法,它似乎應該工作。爲了完整性,它不會重定向到索引,而是會轉發。 –

回答

2

由於它是一個字段錯誤,因爲您已將元素放入JSP頁面中,所以消息接近字段'name'。如果你想打印它,在你想要的位置,<s:fielderror fieldName="name" />

0

我認爲問題是xml文件名。它應該是RegisterAction-validation.xml

+0

謝謝admenva。我重新命名了它。它仍然不起作用:(。 –

+0

我沒有看到任何其他錯誤。你關閉了'RegisterAction-validation.xml'中的''標籤嗎?我想這只是一個複製/粘貼錯誤,但只是如果... – admenva

+0

是的,關閉標籤在那裏 –

0

由於this表示,DOCTYPE應該在validation.xml中。
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> -->

0

把參數驗證值make'true;在<s:form action="register" validate="true">