master
wangbing 5 years ago
parent 9cf8129d88
commit b36826dcf8

@ -537,6 +537,7 @@ public class SpringBootCallable implements Callable {
freeMarkerManager.outputTemp(new File(utils.getAbsolutePath(), "WebUtils.java"), option + "/java/frame/utils/WebUtils.java", ctx);
freeMarkerManager.outputTemp(new File(utils.getAbsolutePath(), "IDgenerator.java"), option + "/java/frame/utils/IDgenerator.java", ctx);
freeMarkerManager.outputTemp(new File(utils.getAbsolutePath(), "Message.java"), option + "/java/frame/utils/Message.java", ctx);
freeMarkerManager.outputTemp(new File(utils.getAbsolutePath(), "UrlUtil.java"), option + "/java/frame/utils/UrlUtil.java", ctx);
//validation
freeMarkerManager.outputTemp(new File(validation.getAbsolutePath(), "Dict.java"), option + "/java/frame/validation/Dict.java", ctx);

@ -1,95 +0,0 @@
package ${basePackage}.frame.freemarker;
import java.io.File;
import ${basePackage}.config.ActionConfig;
import freemarker.template.TemplateModelException;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.validation.support.BindingAwareModelMap;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale;
import ${basePackage}.frame.base.Control;
import ${basePackage}.frame.auth.LocalData;
/**
*
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
@Component
public class Layout {
@Autowired
private FreeMarkerViewResolver viewResolver;
private String screenPrefix = "/screen/";
private String controlPrefix = "/control/";
private String suffix = ".ftl";
public String setScreen() throws TemplateModelException {
try {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
LocaleResolver localeResolver = (LocaleResolver) request.getAttribute(DispatcherServlet.LOCALE_RESOLVER_ATTRIBUTE);
String servletPath = LocalData.getTarget();
servletPath = servletPath.replaceAll("^/", "");
String[] split = servletPath.split("/");
StringBuilder sb = new StringBuilder("");
// 分割组装路径
for (int i = 0; i < split.length; i++) {
sb.append(split[i]);
if (i != split.length - 1) {
sb.append(File.separator);
}
}
Locale locale = localeResolver.resolveLocale(request);
String viewName = "screen" + File.separator + sb.toString();
View view = viewResolver.resolveViewName(viewName, locale);
//无法找到对应screen
if (view == null) {
return "";
} else {
return screenPrefix + servletPath + suffix;
}
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
public String setControl(String control) {
// 查找是否存在对应控制面板执行器
Control controlExec = null;
try {
controlExec = LocalData.getApplicationContext().getBean(ActionConfig.CONTROL_PREFIX + "." + control, Control.class);
HttpServletRequest request = LocalData.getRequest();
HttpServletResponse response = LocalData.getResponse();
BindingAwareModelMap modelMap = new BindingAwareModelMap();
controlExec.exec(modelMap, request, response);
for (String key : modelMap.keySet()) {
request.setAttribute(key, modelMap.get(key));
}
} catch (BeansException e) {
}
control = control.replaceAll("/", File.separator);
return controlPrefix + control + suffix;
}
}

@ -1,106 +0,0 @@
package ${basePackage}.frame.freemarker;
import ${basePackage}.frame.auth.LocalData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator;
import org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver;
import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.Locale;
import java.util.Map;
/**
* FreemarkerViewName
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
@Component("viewNameTranslator")
public class ViewNameTranslator extends DefaultRequestToViewNameTranslator {
@Autowired
private FreeMarkerViewResolver viewResolver;
@Autowired
private Layout layout;
@Autowired
private Uri uri;
@PostConstruct
public void setSharedVariable() {
//设置基本工具类
Map<String, Object> attributesMap = viewResolver.getAttributesMap();
attributesMap.put("Layout", layout);
attributesMap.put("Uri", uri);
}
@Override
public String getViewName(HttpServletRequest request) {
String viewName = "";
try {
LocaleResolver localeResolver = (LocaleResolver) request.getAttribute(DispatcherServlet.LOCALE_RESOLVER_ATTRIBUTE);
String servletPath = LocalData.getTarget();
servletPath = servletPath.replaceAll("^/", "");
Locale locale = localeResolver.resolveLocale(request);
{//查询screen
String[] split = servletPath.split("/");
StringBuilder sb = new StringBuilder("");
sb.append("screen");
for (int i = 0; i < split.length; i++) {
sb.append(File.separator);
sb.append(split[i]);
}
viewName = sb.toString();
View view = viewResolver.resolveViewName(viewName, locale);
if (view == null) {
// LogUtil.e("can not find screen.");
// HttpServletResponse response = LocalData.getResponse();
// response.setStatus(HttpStatus.NOT_FOUND.value());
}
}
{//查找layout
String[] split = servletPath.split("/");
int lt = split.length;
while (lt > 0) {
StringBuilder sb = new StringBuilder("");
sb.append("layout");
for (int i = 0; i < lt - 1; i++) {
sb.append(File.separator);
sb.append(split[i]);
}
viewName = sb.toString() + File.separator + split[split.length - 1];
View view = viewResolver.resolveViewName(viewName, locale);
//无法找到对应layout使用默认layout
if (view == null) {
viewName = sb.toString() + File.separator + "default";
View defaultView = viewResolver.resolveViewName(viewName, locale);
if (null == defaultView && lt == 1) {
System.err.println("can not find layout/default.ftl");
} else if (null == defaultView) {
lt--;
} else {
break;
}
} else {
break;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return viewName;
}
}

@ -1,29 +1,29 @@
package ${basePackage}.frame.freemarker;
package ${basePackage}.frame.utils;
import freemarker.template.TemplateModelException;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.util.Locale;
/**
* Url
* Url
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
@Component
public class Uri {
public class UrlUtil {
public String getUrl(String path) throws TemplateModelException {
if (path == null) {
public String getUrl(String url) {
if (url == null) {
return "";
}
if (!path.startsWith("/")) {
return "/" + path;
if (!url.startsWith("/")) {
return "/" + url;
}
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
@ -36,6 +36,6 @@ public class Uri {
// 上下文路径
String contextPath = request.getContextPath();
return String.format(Locale.CHINA, "%s://%s:%d%s%s", scheme, serverName, serverPort, contextPath, path);
return String.format(Locale.CHINA, "%s://%s:%d%s%s", scheme, serverName, serverPort, contextPath, url);
}
}
Loading…
Cancel
Save

Powered by TurnKey Linux.