TemplateRenderer返回null(Vaadin Flow/14.1)

TemplateRenderer返回null(Vaadin Flow/14.1),vaadin,vaadin-flow,Vaadin,Vaadin Flow,对于我的表格中的一列,我使用了一个TemplateRenderer(显示一个图标,提示该行可能存在问题): grid.addColumn(templaterender.of(“”) .withProperty(“图标”,项目->状态提示(项目)) ... ; 对于某些项目,此模板不相关(没有问题),因此属性“icon”为null。结果为HTML: 还请注意,“图标”属性未显示,标题属性未定义 虽然浏览器没有显示任何内容,但毫无头绪的HTML代码很难看(不知道是否还有性能损失) 空单元格或看起来

对于我的
表格中的一列
,我使用了一个
TemplateRenderer
(显示一个图标,提示该行可能存在问题):

grid.addColumn(templaterender.of(“”)
.withProperty(“图标”,项目->状态提示(项目))
...
;
对于某些项目,此模板不相关(没有问题),因此属性“icon”为
null
。结果为HTML:

还请注意,“图标”属性未显示,标题属性未定义

虽然浏览器没有显示任何内容,但毫无头绪的HTML代码很难看(不知道是否还有性能损失)

空单元格或
看起来好多了


我如何做到这一点?API没有给我任何提示。

这有点复杂,但您可以使用Polymer的
dom if
模板来创建条件子模板,用于不能仅绑定属性的情况。下面的示例根据一个人的年龄是偶数还是奇数打印“偶数”或“奇数”:

grid.addColumn(
      TemplateRenderer.<Person>of(
      "<template is='dom-if' if='[[item.even]]'><b>even</b></template><template is='dom-if' if='[[!item.even]]'><i>odd</i></template>"
      ).withProperty("even", p -> {
            int age = p.getAge();
            return age % 2 == 0;
      }))
      .setHeader("Is age even or odd?");
grid.addColumn(
圣殿骑士团(
“偶数”
).withProperty(“偶数”),p->{
int age=p.getAge();
返回年龄%2==0;
}))
.setHeader(“年龄是偶数还是奇数?”);

这有点复杂,但如果不能仅绑定属性,则可以使用Polymer的
dom if
模板创建条件子模板。下面的示例根据一个人的年龄是偶数还是奇数打印“偶数”或“奇数”:

grid.addColumn(
      TemplateRenderer.<Person>of(
      "<template is='dom-if' if='[[item.even]]'><b>even</b></template><template is='dom-if' if='[[!item.even]]'><i>odd</i></template>"
      ).withProperty("even", p -> {
            int age = p.getAge();
            return age % 2 == 0;
      }))
      .setHeader("Is age even or odd?");
grid.addColumn(
圣殿骑士团(
“偶数”
).withProperty(“偶数”),p->{
int age=p.getAge();
返回年龄%2==0;
}))
.setHeader(“年龄是偶数还是奇数?”);

我认为null是不允许的,但您可以返回空div,例如。@TatuLund我更新了我的问题,以便更清楚地了解我想要实现的目标。我认为null是不允许的,但您可以返回空div,例如。@TatuLund我更新了我的问题,以便更清楚地了解我想要实现的目标。效果完全符合我的期望。或者更好的是,e不需要mpty元素。正如我所希望的那样工作。或者更好的是,不需要空元素。