今天学习spring实战第5版,里面有一些小错误,代码如下:
// tag::all[]
// tag::allButValidation[]
package tacos;
import java.util.List;
// end::allButValidation[]
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;
// tag::allButValidation[]
import lombok.Data;
@Data
public class Taco {
// end::allButValidation[]
// tag::allButValidation[]
// @Size(min=5,message = "至少五个字符")
@NotEmpty(message = "不能为空")
private String name;
// end::allButValidation[]
// tag::allButValidation[]
@Size(min = 1, message = "至少选择一个配料")
private List<String> ingredients;
}
//end::allButValidation[]
//tag::end[]
DesignTacoController的请求如下:
注意我们的实体类其实叫Taco,而教材为model添加的键为design
前端也一样,通过thymeleaf获取了design
上图为接收表单的post请求,把表单的name作为空值提交,这样通过validation检查就会报错,从而返回design,而在design页面就会报错
提示已经很明显了,该name属性不存在于design。
解决方式如下,将get请求的键改为taco,还有不要忘记前端的form里的th:Object也改为taco
所以个人认为,如果实体类需要添加校检,get请求的键值名称要和实体类名字一致。
解决如下图: