如果有一个需要返回多个标签的方法,如何使用 j2html ?
所以这里我有一个可重用的方法,为特定选项构建标签和输入字段。标签放在td中,输入字段放在另一个td字段中,全部在tr内,并返回tr。
逻辑上这只是一件事(用户输入),所以在单个方法中使用它而不是单独的标签和输入方法是有意义的。这适用于我的网页,其中我有一系列行,每个行包含标签和输入字段,所有行都在表中很好地排列。 (来自Java背景我看到使用table只是一个布局管理器,然后尝试使用完全CSS的更合理的方法)
public Tag addInputTextTr(UserOption userOption, String value, String className)
{
return tr(
td(label(userOption.getLabelMsg())
.withTitle(userOption.getTooltipMsg())),
td(input()
.withType(Html.TEXT)
.withName(userOption.getOption()).withValue(value)
.withClass(className)
)
);
}
致电代码
addInputTextTr(UserOption.LICENSE_GUID1, licenseGuid1, LICENSE_INPUTFIELD_CLASS)
我的问题是有时我需要三个表格单元格,所以我可以在行的末尾添加一个按钮。因此,为了解释这一点,我应该从这个函数返回tds并在调用方法中自己包装,但是我不能只返回两个tds,除非我将其包装到一个列表中,这意味着我必须在调用代码时使用each()这使它变得复杂。我不能在span()中返回它们,因为在tr()中不允许span()。
public List<Tag> addInputTextTds(UserOption userOption, String value, String className)
{
List<Tag> tds = new ArrayList<>();
tds.add(
td(label(userOption.getLabelMsg())
.withTitle(userOption.getTooltipMsg())));
tds.add(
td(input()
.withType(Html.TEXT)
.withName(userOption.getOption()).withValue(value)
.withClass(className)
)
);
return tds;
}
现在调用代码
tr(
each(addInputTextTds(UserOption.LICENSE_EMAIL, licenseEmail, LICENSE_INPUTFIELD_CLASS),
next -> next
)
),
我一直在寻找可用于存储多个元素的j2html返回类型?
答案 0 :(得分:1)
我花了一些时间为此演奏不同的解决方案。我能想出的最简单的一个是:
public static void main(String[] args) {
String html =
html(
body(
ul(
makeSomeChildren()
)
)
).renderFormatted();
}
private static DomContent makeSomeChildren() {
return join(b("Child 1"), b("Child 2"));
}
产生:
<html>
<body>
<ul>
<b>Child 1</b><b>Child 2</b>
</ul>
</body>
</html>