我開發一個非常簡單的Struts2的aplication,我得到這個奇怪的(而且容易解決,我敢肯定)問題:如何驗證只是如果用戶提交的東西(用Struts2的)形式
當我訪問directoly登錄URL,它顯示登錄表單(用戶名和密碼的文本字段)這些錯誤:
Name field is required
Password is required
領域是空的,因爲這是用戶第一次進入它,所以我喜歡告訴Struts2驗證系統不要驗證,除非用戶使用用戶名和密碼提交登錄表單。我確信我忽略或僞造了一些東西。
Login.java動作代碼:
package actions.access;
import actions.base.BaseAction;
import data.Webuser;
public class Login extends BaseAction {
private Webuser user;
public String execute() {
if (user != null) {
session = this.getSession();
if (session.get("user-logged") == null) {
session.put("user-logged", user.getId());
}
}
return SUCCESS;
}
public void validate() {
if (user != null) {
Webuser realUser = services.getWebuserByNickname(user.getNickname());
if (realUser.getPass().equals(user.getPass())) {
user.setId(realUser.getId());
} else {
addFieldError("user.nickname", "Nickname or password are wrong");
}
}
}
public Webuser getUser() {
return user;
}
public void setUser(Webuser user) {
this.user = user;
}
}
登錄-validation.xml中代碼:
<field name="user.nickname">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>Login name is required</message>
</field-validator>
</field>
<field name="user.pass">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>Password is required</message>
</field-validator>
</field>
任何形式的幫助將不勝感激。 在此先感謝。
你不需要兩個動作,並使用兩個動作添加不必要的代碼。 – 2011-02-06 03:29:17