package com.taobao.easyweb.core.code; import com.taobao.easyweb.core.Configuration; import com.taobao.easyweb.core.context.Context; import com.taobao.easyweb.core.context.ThreadContext; import com.taobao.easyweb.core.velocity.VelocityEngine; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.io.File; @Component("ewControlTool") public class ControlTool { @Resource(name = "ewVelocityEngine") private VelocityEngine velocityEngine; @Resource(name = "ewCodeRender") private CodeRender codeRender; public String setTemplate(String vmFile) { Context context = ThreadContext.getContext(); String name = ""; String oldCurrentPath = context.getCurrentPath(); // String layout = context.getLayout(); String filePath = DirectoryUtil.getDirectory(context.getCurrentPath(), vmFile); int i = filePath.indexOf(Configuration.getDeployPath()); if (i >= 0) { name = filePath.substring(i + Configuration.getDeployPath().length()); } else { name = filePath; } String groovyFile = (Configuration.getDeployPath() + name).replace(".vm", ".groovy"); File file = new File(groovyFile); if (file.exists()) { try { // context.setLayout(null); String content = codeRender.render(file, "execute"); return content; } catch (Exception e) { return "<!-- control error " + e.getMessage() + "-->"; } finally { context.setCurrentPath(oldCurrentPath);//�ѵ�ǰĿ¼��д��ȥ // context.setLayout(layout); } } if (StringUtils.isBlank(name)) { return "<!-- control error " + vmFile + "-->"; } return velocityEngine.renderTemplate(name, context.getContextMap()); } public ControlTool addParameter(String key, Object value) { Context context = ThreadContext.getContext(); context.putContext(key, value); return this; } }