package com.appleframework.web.springmvc.controller; import java.util.Set; import javax.annotation.Resource; import javax.validation.ConstraintViolation; import javax.validation.Validator; import org.springframework.ui.Model; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import com.appleframework.web.bean.Message; import com.appleframework.web.bean.Message.Type; import com.appleframework.web.freemarker.directive.FlashMessageDirective; public class BaseController { protected static final String ERROR_VIEW = "/commons/error"; protected static final String SUCCESS_VIEW = "/commons/success"; protected static final String ERROR_AJAX = "/commons/error_ajax"; protected static final String SUCCESS_AJAX = "/commons/success_ajax"; protected static final Message ERROR_MESSAGE = Message.error("操作错误"); protected static final Message SUCCESS_MESSAGE = Message.success("操作成功"); protected static final String CONSTRAINT_VIOLATIONS_ATTRIBUTE_NAME = "constraintViolations"; @Resource(name = "validator") protected Validator validator; protected boolean isValid(Object target, Class<?>... groups) { Set<ConstraintViolation<Object>> constraintViolations = validator.validate(target, groups); if (constraintViolations.isEmpty()) { return true; } else { RequestAttributes requestAttributes = RequestContextHolder.currentRequestAttributes(); requestAttributes.setAttribute(CONSTRAINT_VIOLATIONS_ATTRIBUTE_NAME, constraintViolations, RequestAttributes.SCOPE_REQUEST); return false; } } protected boolean isValid(Class<?> type, String property, Object value, Class<?>... groups) { Set<?> constraintViolations = validator.validateValue(type, property, value, groups); if (constraintViolations.isEmpty()) { return true; } else { RequestAttributes requestAttributes = RequestContextHolder.currentRequestAttributes(); requestAttributes.setAttribute(CONSTRAINT_VIOLATIONS_ATTRIBUTE_NAME, constraintViolations, RequestAttributes.SCOPE_REQUEST); return false; } } protected void addFlashMessage(RedirectAttributes redirectAttributes, Message message) { if (redirectAttributes != null && message != null) { redirectAttributes.addFlashAttribute(FlashMessageDirective.FLASH_MESSAGE_ATTRIBUTE_NAME, message); } } protected void addSuccessMessage(Model model, String content, String url) { if ( model != null) { Message message = new Message(Type.success, content, url); model.addAttribute(FlashMessageDirective.FLASH_MESSAGE_ATTRIBUTE_NAME, message); } } protected void addSuccessMessage(Model model, String url) { if ( model != null) { Message message = new Message(Type.success, url); model.addAttribute(FlashMessageDirective.FLASH_MESSAGE_ATTRIBUTE_NAME, message); } } protected void addErrorMessage(Model model, String content) { if ( model != null) { Message message = new Message(Type.error, content, ""); model.addAttribute(FlashMessageDirective.FLASH_MESSAGE_ATTRIBUTE_NAME, message); } } protected String ajax(String content) { return content.trim(); } }