diff --git a/src/main/java/com/sjhy/plugin/tool/VelocityUtils.java b/src/main/java/com/sjhy/plugin/tool/VelocityUtils.java index cd46e2e8b1e55efdbb5244788242bdec5b70c460..46306c77646a76ed5db7e4a1823691799e1f10a2 100644 --- a/src/main/java/com/sjhy/plugin/tool/VelocityUtils.java +++ b/src/main/java/com/sjhy/plugin/tool/VelocityUtils.java @@ -9,6 +9,8 @@ import java.io.PrintWriter; import java.io.StringWriter; import java.util.Map; import java.util.Properties; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * Velocity工具类,主要用于代码生成 @@ -30,6 +32,8 @@ public class VelocityUtils { INIT_PROP.setProperty("runtime.log.logsystem.log4j.logger", "velocity"); } + private static final Pattern REMOVE_SPACES = Pattern.compile("[ ]*(#if|#else|#elseif|#end|#foreach|#set)"); + /** * 禁止创建实例对象 */ @@ -37,6 +41,14 @@ public class VelocityUtils { throw new UnsupportedOperationException(); } + /** + * 去除模板中#if|#else|#elseif|#end|#foreach|#set前的空格 + */ + private static String removeSpaces(String template) { + Matcher matcher = REMOVE_SPACES.matcher(template); + return matcher.replaceAll("$1"); + } + /** * 渲染模板 * @@ -59,7 +71,7 @@ public class VelocityUtils { velocityEngine.setProperty(VelocityEngine.OUTPUT_ENCODING, settings.getEncode()); try { // 生成代码 - velocityEngine.evaluate(velocityContext, stringWriter, "Velocity Code Generate", template); + velocityEngine.evaluate(velocityContext, stringWriter, "Velocity Code Generate", removeSpaces(template)); } catch (Exception e) { // 将异常全部捕获,直接返回,用于写入模板 StringBuilder builder = new StringBuilder("在生成代码时,模板发生了如下语法错误:\n");