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 :
- konfigurując ją w xml`u
- używając annotations
Ja przedstawię ten drugi (szybszy sposób) :
- dodamy annotations do naszej akcji :
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ą
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
- dodamy do pliku struts.xml dodatkowy result dla akcji SampleAction :
/index.jsp
NameAction
/name.jsp
Fragment
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
Teraz jak mamy już gotowy przykład możemy go odpalić… dopalamy i… leci WARNING długi jak droga z Krakowa do Gdańska ![]()
Po chwili googlowania okazało się, że najnowszy Struts2 ma błędy w walidatorach
Dobra teraz czas na walkę z WebLogiciem ![]()










