Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Struts validation


Автор: seth 8.9.2006, 22:51
есть такая вот проверка в форме
Код

 public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
        ActionErrors errors = new ActionErrors();
        if (firstName==null || firstName.trim().equals("")){
        errors.add("firstName", new ActionError("userRegistration.firstName.problem"));
        }
        return errors;
    }

она почему то запускается при первой загрузке страницы т.е. выводится сообщение об ошибке - что где надо прописать?

Автор: Maksym 9.9.2006, 12:27
seth
firstName -- инициализируется конструкторе или при объявлении? Запости полный код класса формы.

Автор: Nobody 9.9.2006, 15:07
seth, добавь условие, при котором должна вызываться валидация.

Автор: seth 9.9.2006, 15:47
Цитата

seth, добавь условие, при котором должна вызываться валидация.

можно поподробнее как это сделать??

Вот исходник класса формы
Код

import org.apache.struts.action.*;

import javax.servlet.http.HttpServletRequest;
public class UserRegistrationForm extends ActionForm {
    private String firstName;
    private String lastName;
    private String userName;
    private String password;
    private String passwordCheck;
    private String email;
    private String phone;
    private String fax;
    private boolean registered;    
    public void reset(ActionMapping mapping, HttpServletRequest request) {
        firstName=null;
        lastName=null;
        userName=null;
        password=null;
        passwordCheck=null;
        email=null;
        phone=null;
        fax=null;
        registered=false;
    }
    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
        ActionErrors errors = new ActionErrors();
        if (firstName==null || firstName.trim().equals("")){
        errors.add("firstName", new ActionError("userRegistration.firstName.problem"));
        }
        return errors;
    }
    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getPasswordCheck() {
        return passwordCheck;
    }

    public void setPasswordCheck(String passwordCheck) {
        this.passwordCheck = passwordCheck;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getFax() {
        return fax;
    }

    public void setFax(String fax) {
        this.fax = fax;
    }

    public boolean isRegistered() {
        return registered;
    }

    public void setRegistered(boolean registered) {
        this.registered = registered;
    }


}

Автор: Nobody 9.9.2006, 20:58
добавь, например

Код

  private String action;
  public void setAction(final String v) {
    this.action = v;
  }
  public String getAction() {
    return this.action;
  }


измени validate:

Код

  public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
    if ("save".equals(this.action)) {
      ...
    }
  }


и добавь на страницу хидден-поле с action="save"

В экшене ты ведь как-то различаешь, был ли это просто запрос на показывание страницы или сабмит формы.

Автор: seth 10.9.2006, 17:07
Начала выскакивать такая ошибка - хотя файл вроде на месте...
[ERROR] 54:29(ActionServlet.java:initServlet:1147)
The /WEB-INF/web.xml was not found.

пытался все вернуть обратно - ничего не получается... smile

Автор: seth 10.9.2006, 21:40
Вобщем ту ошибку решил (там была парралельно проблема с log4j)
в jsp добавил это
<html:hidden property="action" value="save"/>
и все описал как советовали

результат аналогичный... (т.е. проверка всеравно происходит)

Автор: JavaCoder 13.9.2006, 12:57
Советую подобные проверки делать с помощью JavaScript.
Вы уверены что верно прописан мапинг?
Какая версия Стратс используется? 1.2.9?

Автор: BlackD 14.4.2007, 02:31
Цитата(seth @ 8.9.2006,  22:51)
Код

 public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
        ActionErrors errors = new ActionErrors();
        if (firstName==null || firstName.trim().equals("")){
        errors.add("firstName", new ActionError("userRegistration.firstName.problem"));
        }
        return errors;
    }


if (firstName==null) - на странице присутствует <html:text property="firstName" /> ?

Пожалуйста, приведи код страницы, с которой связан bean UserRegistrationForm. И struts-config тоже.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)