Java tutorial
/** * Copyright (c) 2005-2012 https://github.com/zhangkaitao * * Licensed under the Apache License, Version 2.0 (the "License"); */ package cn.guoyukun.spring.web.controller; import java.io.Serializable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.annotation.AnnotationUtils; import org.springframework.ui.Model; import org.springframework.util.Assert; import org.springframework.util.StringUtils; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestMapping; import cn.guoyukun.spring.jpa.entity.AbstractEntity; import cn.guoyukun.spring.utils.ReflectUtils; /** * * <p>User: * <p>Date: 13-2-23 ?3:56 * <p>Version: 1.0 */ public abstract class BaseController<M extends AbstractEntity, ID extends Serializable> { // private static final Logger LOG = LoggerFactory.getLogger(BaseController.class); /** * */ protected final Class<M> entityClass; private String viewPrefix; protected BaseController() { this.entityClass = ReflectUtils.findParameterizedType(getClass(), 0); setViewPrefix(defaultViewPrefix()); } /** * ? * * @param model */ protected void setCommonData(Model model) { } /** * ?? ? * * 1???@RequestMappingvalue? * 2?????? */ public void setViewPrefix(String viewPrefix) { if (viewPrefix.startsWith("/")) { viewPrefix = viewPrefix.substring(1); } this.viewPrefix = viewPrefix; } public String getViewPrefix() { return viewPrefix; } protected M newModel() { try { return entityClass.newInstance(); } catch (Exception e) { throw new IllegalStateException("can not instantiated model : " + this.entityClass, e); } } /** * ????prefixViewName + "/" + suffixName * * @return */ public String viewName(String suffixName) { if (!suffixName.startsWith("/")) { suffixName = "/" + suffixName; } String viewName = getViewPrefix() + suffixName; LOG.info("VIEWNAME:{}", viewName); return viewName; } /** * ? * ?true * * @param m * @param result * @return */ protected boolean hasError(M m, BindingResult result) { Assert.notNull(m); return result.hasErrors(); } /** * @param backURL null ??getViewPrefix() * @return */ protected String redirectToUrl(String backURL) { if (StringUtils.isEmpty(backURL)) { backURL = getViewPrefix(); } if (!backURL.startsWith("/") && !backURL.startsWith("http")) { backURL = "/" + backURL; } return "redirect:" + backURL; } protected String defaultViewPrefix() { String currentViewPrefix = ""; RequestMapping requestMapping = AnnotationUtils.findAnnotation(getClass(), RequestMapping.class); if (requestMapping != null && requestMapping.value().length > 0) { currentViewPrefix = requestMapping.value()[0]; } if (StringUtils.isEmpty(currentViewPrefix)) { currentViewPrefix = this.entityClass.getSimpleName(); } return currentViewPrefix; } }