我找到了解决问题的方法,但没有找到虚拟文件类。extend
如果我在游戏中创建将替换我视图中的标签的自定义标签,它可以是 dan 。
如果您查看播放源代码,您会发现现有
FastTags 类的工作原理,第 319 行
public static void _extends(Map<?, ?> args, Closure body, PrintWriter out, ExecutableTemplate template, int fromLine) {
try {
if (!args.containsKey("arg") || args.get("arg") == null) {
throw new TemplateExecutionException(template.template, fromLine, "Specify a template name", new TagInternalException("Specify a template name"));
}
String name = args.get("arg").toString();
if (name.startsWith("./")) {
String ct = BaseTemplate.currentTemplate.get().name;
if (ct.matches("^/lib/[^/]+/app/views/.*")) {
ct = ct.substring(ct.indexOf("/", 5));
}
ct = ct.substring(0, ct.lastIndexOf("/"));
name = ct + name.substring(1);
}
BaseTemplate.layout.set((BaseTemplate) TemplateLoader.load(name));
} catch (TemplateNotFoundException e) {
throw new TemplateNotFoundException(e.getPath(), template.template, fromLine);
}
}
我只需要使用TemplateLoader.load(String, String)
接受模板作为字符串的重载方法(与原始实现中的文件名相比),然后将其设置为
BaseTemplate.layout.set(...)
方法。当然,首先我需要通过 HTTP 请求从远程服务器获取模板。