我有一个使用 encType =“multipart / form-data”的 Spring MVC 应用程序。该表单是用户注册表单,其中包含其他字段中的图像,例如用户名,名字,姓氏,dob ect。然后将表单提交给Controller,后者通过 @InitBinder 注释调用验证。
当文件发布到处理验证的类时,所有值都是 NULL 。我知道这会发生,因为 <form>
标记中的 encType =“multipart / form-data”。我也在applicationcontext.xml中使用这个bean定义:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- one of the properties available; the maximum file size in bytes -->
<property name="maxUploadSize" value="157286400" />
<property name="maxInMemorySize" value="5242880"/>
<property name="defaultEncoding" value="utf-8"/>
</bean>
有人可以举例说明我如何从这个文件中提取值并验证它们。我不确定如何在验证器类中接收数据并处理其内容。
验证类
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
import com.crimetrack.business.Citizens;
@Component
public class CitizenRegistrationValidation implements Validator{
private final Logger logger = Logger.getLogger(getClass());
private @Autowired HttpServletRequest request;
public boolean supports(Class<?> clazz) {
return Citizens.class.equals(clazz);
}
public void validate(Object target, Errors errors) {
Citizens citizens = (Citizens)target;
//---------------------------------------------------------------------------------------------
String user_request = request.getParameter("user_request");
String photo = request.getParameter("photo");
logger.info("Thee request param for photo is :"+ photo);
logger.info("About to validate citizen");
logger.info("The user request was " + user_request);
if (!user_request.equals("New")){
if (user_request.equals("Save") || user_request.equals("update")){
if(citizens.getSocialSecurityNumber() == 0){
errors.rejectValue("socialSecurityNumber", "socialSecurityNumber.required");
}
if (citizens.getCitizenTypeId() == 1){
errors.rejectValue("citizenTypeId", "citizenTypeId.required");
}
if(citizens.getfName() == null){
errors.rejectValue("fName", "fName.required");
}
if (citizens.getlName() == null){
errors.rejectValue("lName", "lName.required");
}
if (citizens.getDob() == null){
errors.rejectValue("dob", "dob.required");
}