Struts 2 - walidacja za pomocą adnotacji

Tym razem będzie krótko (muszę jeszcze powalczyć z WebLogiciem :P).
Pisząc aplikacje na pewno spotykacie się z koniecznością sprawdzenia poprawności danych, poprawność ta możemy sprawdzić po stronie klienta (przeglądarki) jaki i po stronie servera. Dziś przedstawię jak szybko można sobie sprawić walidację po stronie servera ;)
Bazując na poprzednim wpisie postaramy się go uzupełnić o wymagalność imienia i określenie maksymalnej długości wprowadzonego ciągu znaków.

Dobra zaczynamy !

Walidację po stronie servera w Struts2 możemy zapewnić na dwa sposoby :

Ja przedstawię ten drugi (szybszy sposób) :

package org.holewa.struts2.action;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.validator.annotations.RequiredStringValidator;
import com.opensymphony.xwork2.validator.annotations.StringLengthFieldValidator;
import com.opensymphony.xwork2.validator.annotations.Validation;

/**
 * Struts2 - validation
 * @author Radoslaw Holewa
 */
@Validation
public class SampleAction extends ActionSupport {

  private String name;

  public String execute() throws Exception {
    return SUCCESS;
  }

  @RequiredStringValidator(message="You must enter your name.", key="sample.validator.required")
  @StringLengthFieldValidator(maxLength="20", message="Wrong length", key="sample.validator.length")
  public void setName(String name) {
    this.name = name;
  }

  public String getName() {
    return name;
  }

}

Aby włączyć walidację dla danej akcji musimy oznaczyć ją adnotacją

@Validation

następnie używamy dwóch adnotacji (do sprawdzenia czy wpisana jest jakakolwiek wartość i czy jej długość nie przekracza 20 znaków), w adnotacjach użyłem tylko najważniejszych parametrów, takich jak
message - domyślny komunikat, key - klucz komunikatu w messages.properties i dla walidacji długości wprowadzonej wartości maxLength który oznacza jaka jest maksymalna dopuszczalna długość wprowadzonego ciągu :D

  • dodamy do pliku struts.xml dodatkowy result dla akcji SampleAction :




    
      /index.jsp
      NameAction
    
    
      /name.jsp
    
  

Fragment

/index.jsp

oznacza że gdy podczas wykonania walidacji zostanie zwrócona wartość input z akcji to przekierujemy użytkownika do strony index.jsp (w efekcie dostaje możliwość poprawienia danych).

  • dodamy też na naszej stronce wyświetlanie komunikatów o źle wpisanej wartości
<%@ taglib prefix="s" uri="/struts-tags"%>






  
    

Tag

służy do pokazywania komunikatów o błędach, wyświetlanie komunikatów możemy tak skonfigurować aby pokazywały się w różnych miejscach bądź aby pokazywały się tylko niektóre komunikaty.

Teraz jak mamy już gotowy przykład możemy go odpalić… dopalamy i… leci WARNING długi jak droga z Krakowa do Gdańska :P
Po chwili googlowania okazało się, że najnowszy Struts2 ma błędy w walidatorach :P

Dobra teraz czas na walkę z WebLogiciem :D

  • Digg
  • del.icio.us
  • Google
  • description
  • Technorati
  • Wykop
April 3, 2007 | |

COMMENTS

 

Trackback URI | Comments RSS

Leave a Reply