我想要这样的文字
如果罗密欧包含文本。
如果 Romeo 为 Null 或 Empty
我的胡子看起来像
{{alpha}}
{{#romeo}}{{romeo}}\n\n{{/romeo}}
{{julia}}
本作品适用于罗密欧为空的情况。但当 romeo 是空字符串时则不然。是否可以在不更改后端输入的情况下解决这个问题
if(romeo.isEmpty()){
romeo=null;
在不配置“错误”的情况下执行此操作的最佳方法是使用 Mustache 的点断链功能,这在所有 Mustache 实现中均不可用。
我将使用 JStachio 来演示这个,但这应该在 JMustache 中也能工作,但可能不适用于 Mustache.java,因为它没有一致的空白处理:
@JStache(template = """
{{alpha}}
{{^romeo.empty}}
{{#romeo}}
{{romeo}}
{{/romeo}}
{{/romeo.empty}}
{{julia}}
""")
public record SkipEmptyStrings(String alpha, String romeo, String julia) {
}
请注意,由于反向路径规则,我们仍然必须检查罗密欧是否存在。即使 romeo 为空,反向路径也会成功。
@Test
public void testRomeo() {
SkipEmptyStrings e = new SkipEmptyStrings("Alpha", "Romeo", "Julia");
String actual = JStachio.render(e);
String expected = """
Alpha
Romeo
Julia
""";
assertEquals(expected, actual);
}
@Test
public void testRomeoNull() {
SkipEmptyStrings e = new SkipEmptyStrings("Alpha", null, "Julia");
String actual = JStachio.render(e);
String expected = """
Alpha
Julia
""";
assertEquals(expected, actual);
}
@Test
public void testRomeoEmpty() {
SkipEmptyStrings e = new SkipEmptyStrings("Alpha", "", "Julia");
String actual = JStachio.render(e);
String expected = """
Alpha
Julia
""";
assertEquals(expected, actual);
}