0
Play 2.3.7 프레임 워크 프로젝트에서 다음 Address.java 클래스가 있지만 사용자 정의 유효성 검사 함수 validate()를 사용하여 국가 필드의 입력이 작동하지 않는지 확인합니다. .Play 2.3.7 프레임 워크 양식에 대한 사용자 지정 유효성 검사가 작동하지 않습니다.
필드 국가는 "AR", "BE"또는 "SL"만 허용해야합니다. 하지만 지금은 실제로 유효성 검사가 작동하지 않는다는 것을 의미하는 2 문자 문자열을 받아들입니다.
누구든지 여기에 잘못된 정보를 알려주십시오.
package models;
import play.data.*;
import play.data.validation.Constraints.*;
import javax.persistence.*;
@Entity
public class Address extends play.db.ebean.Model {
@Id
@GeneratedValue
public Long internalId;
//CUSTOM :: Sample implementation of Hard Coded data
public enum Country {
ARDA("Arda", "AR"),
BELGIUM("Belgium", "BE"),
SMURFS_LAND("Smurfs Land", "SL");
public String name;
public String id;
private Country(String name, String id) {
this.name = name;
this.id = id;
}
public static Country getById(String id) {
for (Country c: values()) {
if (c.id.equals(id)) {
return c;
}
}
throw new IllegalArgumentException("Country not found => Bad id {"+id+"}");
}
}
@Required
@Pattern(
value="[A-Z]{1}\\w*, [0-9]+",
message="A street starts with an upper case, and ends with a number after a comma"
)
public String fullStreet;
@Required
public String county;
@Required
@MaxLength(2)
public String country;
//CUSTOM :: validation rules
public String validate() {
try {
Country.getById(country);
return null;
} catch (IllegalArgumentException e) {
return "Bad country : " +country;
}
}
}
제임스 감사합니다. 네, 맞습니다. Address는 User (최상위 레벨 객체)의 중첩 된 객체이며 이것은 http://pastebin.com/Kv2aAC26 클래스입니다. 유효성 검사를 사용자 클래스로 이동하려고 시도했지만 수정되지 않았습니다. 사용자 클래스 내부의 이름 필드에 다른 validate() 함수를 작성하려고했으나 유효성 검사가있는 것처럼 양식을 제출합니다. 거기 없어. – beeko
다음은 User 클래스에서 테스트 한 validate()입니다. public string validate() { if (name! = "Tom") { \t return "invalid name"; } else { \t return null; } } – beeko