我試圖在服務器端使用註釋使用ModelDriven
方法+驗證。但似乎註釋根本不起作用。我有一個簡單User
類名,姓,電子郵件等:Struts 2註釋驗證
@Entity
@Table(name = "USER")
@Validation
public class User {
private Long id;
private String name;
private String gender;
private String country;
private String aboutYou;
private Boolean mailingList;
...
@Column(name = "USER_NAME")
@RequiredStringValidator(message = "User Name field is empty.")
public String getName() {
return name;
}
@Column(name = "USER_GENDER")
@RequiredStringValidator(message = "User Gender field is empty.")
public String getGender() {
return gender;
}
...
}
我用@RequiredStringValidator
關於性別和名字字段的驗證。 我UserAction
類處理請求是:
@Validation
public class UserAction extends ActionSupport implements ModelDriven<User> {
private static final long serialVersionUID = -6659925652584240539L;
private User user = new User();
private List<User> userList = new ArrayList<User>();
private UserDAO userDAO = new UserDAOImpl();
@VisitorFieldValidator(message = "", appendPrefix = false)
public User getModel() {
return user;
}
/**
* To save or update user.
*
* @return String
*/
@VisitorFieldValidator(message = "", appendPrefix = false)
public String saveOrUpdate() {
userDAO.saveOrUpdateUser(user);
return SUCCESS;
}
/**
* To list all users.
*
* @return String
*/
public String list() {
userList = userDAO.listUser();
return SUCCESS;
}
@VisitorFieldValidator(message = "", appendPrefix = false)
public User getUser() {
return user;
}
...
}
我使用@VisitorFieldValidator(message = "", appendPrefix = false)
,因爲我讀過,這是必要的情況下與ModelDriven
方法。
我struts.xml
是:
<struts>
<package name="default" extends="hibernate-default">
<action name="saveOrUpdateUser" method="saveOrUpdate" class="com.tutorials4u.web.UserAction">
<result name="success" type="redirect">listUser</result>
<result name="input">/register.jsp</result>
</action>
<action name="listUser" method="list" class="com.tutorials4u.web.UserAction">
<result name="success">/register.jsp</result>
<result name="input">/register.jsp</result>
</action>
</struts>
,它的需要來定義<result name="input">
進行驗證我讀過。 這是我register.jsp其中必須驗證字段的定義:
<s:form action="saveOrUpdateUser" method = "POST" validate="true">
<s:actionerror/>
<s:fielderror />
<s:push value="user">
<s:hidden name="id" />
<s:textfield name="name" label="User Name" />
<s:radio name="gender" label="Gender" list="{'Male','Female'}" />
<s:select name="country" list="{'India','USA','UK'}" headerKey=""
headerValue="Select" label="Select a country" />
<s:textarea name="aboutYou" label="About You" />
<s:checkbox name="mailingList"
label="Would you like to join our mailing list?" />
<s:submit />
</s:push>
</s:form>
我web.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<description>struts2</description>
<display-name>struts2</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
而問題是,這一切都不起作用。我真的非常感謝任何幫助和任何建議,因爲我仍然對抗這個問題持續了4個小時,我頭腦中唯一的想法告訴我,確認my_own_bicycle
而不是使用這種「方便」的驗證解決方案更容易。
我不知道validate =「true」是指客戶端的驗證。我應該寫什麼來在服務器端進行驗證?謝謝。 –
刪除它,它會繼續。 –
我已經刪除它,但它仍然不起作用:-( –