第一个问题是我在后台创建类 extends TagSupport,并配置*.tld文件,项目是springboot,但是没有创建WEB-INF与web.xml,那这个配置与*.tld文件怎么放置与引用呢。
第二个问题是freemarker如何导入jsp标签并使用。
目录结构:
project
-src/main/java
-src/main/resource
-mapper
-public(静态资源文件)
-template(freemarker页面)
-src/test/java
-Maven xxx
-JRE xxx
-logs
-public
-src
-main(空文件夹)
-tes
今天有空,看了下freemarker的代码流程,大概是可以兼容jsp的。私信不能发图,就这边说了。如果问题已经解决了,就当交流,看看吧
c.tld为例
1.项目目录是这样的,标签文件在这里
2.boot代码配置是这样的
3.html中的引用是这样的,"http://java.sun.com/jsp/jstl/core"为c.tld的uri
4.html中的调用是这样的
5.稍微试了上面几种标签,使用同一个标签,freemarker还是不同于jsp的,jsp自己有自己的实现机制。例如上面的foreach中没定义 var 属性,因为定义后freemarker并不能获取到。同理凡是其他含有类似var的属性的jsp标签,应该都是不行的
其他的单纯功能性的标签,基本都可以,如上图的if标签(格式不同),when标签,单纯的foreach(无var)都可以运行,题主需要使用其他的话 可以自己尝试一下。但freemarker自己的功能已经完全可以了。。。兼容jsp很虐心
6.补一张依赖图
7.(逃,反正题主肯定也不会看这个问题了
哇文件目录一团糟,其实目录就是想让你们清楚的传达*.tld文件我要放在哪个位置,哈哈别在意,如果不行的话评论下我再贴个目录出来
【1】template目录,,,你的项目里面有没有,,这个目录是放资源的,,放进去就应该可以访问。
WEB-INF与web.xml,,,springboot里面貌似不需要(我创建的时候里面没有)
网上还有中方法,价格配置类,你可以试试:链接:http://www.cnblogs.com/chry/p/5877979.html
@Configuration
public class MyWebAppConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/myResource/**").addResourceLocations("classpath:/myResource/");
super.addResourceHandlers(registry);
}
}
【2】第二个问题,,你看看这个博客http://blog.csdn.net/coslay/article/details/37815659
不知道是不是已经解决了问题,稍微试了下,普通的方式不太行得通。说一下思路 也许对题主有帮助
springboot在非web模式下的项目下且使用了freemarker,想用freemarker也能使用jsp标签
第一个尝试的是直接在freemarker的configure里进行添加,这样子操作能够使ftl文件政策 assgin tld文件,但解析的时候会报缺少objecgWapper类,大概这边还少了一步操作,这部分需要详细看下源码才能解决
@Autowired
private FreeMarkerConfigurer freeMarkerConfigurer;
@PostConstruct
public void loadClassPathTlds() {
freeMarkerConfigurer.getTaglibFactory().setClasspathTlds(classPathTldList);
}
第二个尝试,就是直接修改源码,源码原本的获取方式是直接读取WEB-INFO下的web.xml文件,修改这个方式就好。这个尝试git上有人尝试过,但好像效果不好。
其实还可以尝试一下,理解boot的web.xml文件的表达形式,应该也能达到目的
上面几个思路,工作日没有时间深入研究,所以也只能算是给题主提个方向。日后有结果的话,再私信题主吧,如果没时间,然后忘记了,题主就当没这回事吧。。。(逃