在freemarker中如何设置红色的*?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在freemarker中如何设置红色的*?相关的知识,希望对你有一定的参考价值。

在freemarker中如何设置红色的*?
前两天在看freemarker生成静态页面,之前略微接触过freemarker,但根本不了解是干嘛用的,只知道如果页面上的text框的值为Null的时候,就会出现黄黄的警告,一大片一大片的。现在基本了解,但是在创建模板的时候,发现eclipse中打开的.ftl文件都是黑色的字体,没有任何不同性质的代码的颜色的区分,觉得巨别扭,就视图解决一下,一位同事给发了个freemarker的插件,但是放到eclipse中的插件包下,并且重启了eclipse后,还是效果没变,于是,就进一步解决,也是在网上找的其他人的解决方法。下面步骤:
1.将插件hudson.freemarker_ide_0.9.14文件夹放到eclipse下的plugins文件夹下
按理,这样的话,重启eclipse就应该解决了 但是不成 因为hudson.freemarker_ide_0.9.14文件夹下的freemarker-2.3.6.jar是比较早的版本,需要下载新的版本替换它
2.将freemarker-2.3.6.jar删掉,用freemarker-2.3.15.jar替换
3.把MANIFEST.MF里的Bundle-ClassPath也改为freemarker-2.3.15.jar
4.重启eclipse
打开window --> Preferences ,就会找到FreeMarker Editor。
在General --> Editors --> File Associations下,为*.html和*.htm文件添加FreeMarker Editor 作他们关联的编辑器 , *.ftl文件的默认编辑器就是FreeMarker Editor。这样在编辑混合有HTML和FreeMarker标记的文件时,可以选择右击文件 --> Open with HTML Editor 或者 Open with FreeMarker Editor
参考技术A 在项目中遇到一个这么一个要根据表格数值的不同,设置不同的背景色。例如



6月份的结果是6,根据阀值要设置成红色。

实现起来也很简单,在模板生成的xml中,找到对应得单元格,一个tc元素为一个单元格,设置对应w:shd元素的属性

$c.m6color为java那边传过来的数据,例如$c.m6color的值为'red',就会显示红色,也可以使用RGB格式表示颜色
参考技术B 在项目中遇到一个这么一个要根据表格数值的不同,设置不同的背景色。例如



6月份的结果是6,根据阀值要设置成红色。

实现起来也很简单,在模板生成的xml中,找到对应得单元格,一个tc元素为一个单元格,设置对应w:shd元素的属性

$c.m6color为java那边传过来的数据,例如$c.m6color的值为'red',就会显示红色,也可以使用RGB格式表示颜色

我的 Freemarker ObjectWrapper 如何访问模板设置

【中文标题】我的 Freemarker ObjectWrapper 如何访问模板设置【英文标题】:How can my Freemarker ObjectWrapper access a template setting 【发布时间】:2020-01-29 01:48:27 【问题描述】:

用例:系统管理员将 Freemarker 模板存储在数据库中,该模板用于(由 Spring Boot REST API)以区域设置感知方式将系统用户(响应者)存储的信息呈现给不同的用户类型(审阅者)。

受访者的回答可能存储在此类对象中(或此类对象的列表中,以防向受访者提出的问题预计会有多个答案):

// snip
import com.fasterxml.jackson.databind.node.ObjectNode;
// more imports snipped

public class LanguageStringMap 
    private Map<Language, String> languageStringMap;

    public LanguageStringMap(ObjectNode languageMapNode) 
        // snip of code instantiating a LanguageStringMap from JSON
    

    public void put(Language language, String value) 
        if (value.length() == 0)
            throw new IllegalArgumentException(String.format(
                    "value for language '%s' of zero length", language.getCode()));
        languageStringMap.put(language, value);
    

    public String get(Language language)  return languageStringMap.get(language); 

我想我想做的是编写一个 ObjectWrapper,它将 LanguageStringMap 的实例映射到一个字符串(通过调用 get() 方法获得设置)。与使上传的模板包含一堆模板方法调用相比,这为系统管理员提供了更清晰的用户体验。

为此,我的对象包装器需要访问模板设置。我已经阅读了pertinent Freemarker documentation,但我仍然不清楚如何做到这一点,或者是否有可能。

我认为尝试通过将资源包与模板一起上传到数据库来实现这一点是错误的,但这是一个考虑因素。

【问题讨论】:

【参考方案1】:

通常,您只需在处理模板之前将特定于语言环境的字符串与所有其他变量一起放入数据模型中。在这种情况下,不需要ObjectWrapper 自定义。但是,如果您必须使用基于ObjectWrapper 的解决方案,那么您可以使用Environment.getCurrentEnvironment().getLocale() 获取ObjectWrapper 方法中的语言环境(例如在DefaultObjectWrapper.handleUnknownType 的覆盖中)。

【讨论】:

以上是关于在freemarker中如何设置红色的*?的主要内容,如果未能解决你的问题,请参考以下文章

无法正确解析FreeMarker视图

开源代码生成器,基于mybatis-generator扩展,结合freemarker

使用 Spring MVC 时如何在 Freemarker 视图中设置内容类型?

我的 Freemarker ObjectWrapper 如何访问模板设置

Apache FreeMarker

如何从 freemarker 设置 struts 参数标记的值