如何将模板的template.xml参数值转换为小写,从模板生成新对象时



我已经创建了一个具有初始化参数的自定义模板,其值必须像以下情况一样使用,而其他时间则以小写形式使用。

这是自定义模板的文件 template.xml 中编码的参数定义:

<parameter
        id="itemClass"
        name="ListView Item Name"
        type="string"
        constraints="class|unique|nonempty"
        default="ItemClass"
        help="The name of the class of the ListView item" />

,它用于生成Java类文件和相关的XML布局文件。

被用作班级名称,它通常是大写的,这对于Java类文件(即myitemclass.java(。

创建相关的XML布局文件时出现的问题是因为其名称使用相同的参数不符合应用于XML资源文件的全节制规则(myitemclass_layout.xml而不是myitemclass_layout.xml(。/p>

这是我在 copipe.xml.ftl 文件中使用的构建语句:

<instantiate from="root/src/app_package/ItemClass.${ktOrJavaExt}.ftl"
               to="${escapeXmlAttribute(srcOut)}/${itemClass}.java" />
<open file="${escapeXmlAttribute(srcOut)}/${itemClass}.${ktOrJavaExt}" />
<instantiate from="root/res/layout/item_layout.xml.ftl"
               to="${escapeXmlAttribute(resOut)}/layout/${itemClass}_layout.xml" />
<open file="${escapeXmlAttribute(resOut)}/layout/${itemClass}_layout.xml" />

因此,我需要在第二个语句中删除$ {itemClass}才能获得有效的XML文件名。

可以完成吗?

根据可以在活动/masterdetailflow/globals.xml.ftl上找到的示例,您可以使用lower_case来实现这一点。

<instantiate from="root/src/app_package/ItemClass.${ktOrJavaExt}.ftl"
               to="${escapeXmlAttribute(srcOut)}/${itemClass}.java" />
<open file="${escapeXmlAttribute(srcOut)}/${itemClass}.${ktOrJavaExt}" />
<instantiate from="root/res/layout/item_layout.xml.ftl"
               to="${escapeXmlAttribute(resOut)}/layout/${itemClass?lower_case}_layout.xml" />
<open file="${escapeXmlAttribute(resOut)}/layout/${itemClass?lower_case}_layout.xml" />

可以在此处找到允许的freemarker允许功能的完整列表。

最新更新