encType="multipart/form-data"を使用するSpring MVCアプリケーションがあります。このフォームは、ユーザー名、名、姓、生年月日などのフィールドに画像を含むユーザー登録フォームです。次に、フォームは@InitBinderアノテーションによる検証を呼び出す Controller に送信されます。
検証を処理するクラスにファイルがポストされると、すべての値がNULLになります。これは、タグのencType="multipart/form-data"が原因で発生することを読み ました<form>
。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");
}