2 qq 23968611 qq_23968611 于 2017.08.30 12:57 提问

springboot结合自定义标签库以及freemarker如何引入自定义标签库

第一个问题是我在后台创建类 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

4个回答

vane11
vane11   2017.09.06 15:12
已采纳

今天有空,看了下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.(逃,反正题主肯定也不会看这个问题了

qq_23968611
qq_23968611 老铁没毛病很不巧,刚好看到
3 个月之前 回复
qq_23968611
qq_23968611   2017.08.30 13:05

哇文件目录一团糟,其实目录就是想让你们清楚的传达*.tld文件我要放在哪个位置,哈哈别在意,如果不行的话评论下我再贴个目录出来

Small_Mouse0
Small_Mouse0   Ds   Rxr 2017.08.30 13:08

【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

Small_Mouse0
Small_Mouse0 回复qq_23968611: 嗯,你先试试
3 个月之前 回复
qq_23968611
qq_23968611 嗯我知道了,我先查查springboot配置web试试看看吧
3 个月之前 回复
Small_Mouse0
Small_Mouse0 回复qq_23968611: springboot也有配置文件的,,,“\resources\application.yml”(后缀可能不一样),,这个配置文件,基本上需要用到的配置都有,,自定义jsp标签我还没弄过,这个配置文件很全配置内容和springMVC这些一样,你可以先试试,,我平时用IDEA,这个文件自动提示还是相当方便的
3 个月之前 回复
qq_23968611
qq_23968611 嗯嗯,不使用springboot的项目要在WEB-INF下创建*.tld,并且要在web.xml中配置<jsp-servlet>标签去指向后台自定义标签实现控制的代码类,springboot要怎么完成这个动作哇。springboot不太理解他的web配置
3 个月之前 回复
vane11
vane11   2017.08.31 14:47

不知道是不是已经解决了问题,稍微试了下,普通的方式不太行得通。说一下思路 也许对题主有帮助
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文件的表达形式,应该也能达到目的
上面几个思路,工作日没有时间深入研究,所以也只能算是给题主提个方向。日后有结果的话,再私信题主吧,如果没时间,然后忘记了,题主就当没这回事吧。。。(逃

vane11
vane11 回复qq_23968611: 主要还是因为没有涉及过这样的标签库问题,jsp能做的,freemarker基本也能做。新问题需要点时间
3 个月之前 回复
vane11
vane11 回复qq_23968611: 不做调整的情况下,直接assign引入 ,应该是不行的,这个和静态资源也没有关系;不做代码上的修改,直接引入的话,我之前都是失败的;没有时间好好弄这个,过了双休再来看看,我还是更加倾向重写freemarker的configure类,boot也支持这样的做法,吃早饭,(逃
3 个月之前 回复
qq_23968611
qq_23968611 装完逼就跑真刺激。哈哈哈,现在还没解决呢,正想跳楼呢,已经迈出去了结果瞟了一眼手机发现有人回复,就从天台上下来了。有帖子说可以使用<#assign  FCK =JspTaglibs["/WEB-INF/FCKeditor.tld"]/> 去引入tld文件,然后使用<@FCK.editor id="EditorDefault"  ..  />,等会试一下。springboot没有WEB-INF的话我的*.tld文件直接放在src/main/resource中的static目录下就可以引入tld路径吗  
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片