【发布时间】:2018-01-25 21:25:56
【问题描述】:
当有一个方法需要返回多个标签时如何使用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 并在调用方法中自己包装到 tr 中,但是我不能只返回两个 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 返回类型?
【问题讨论】:
-
@Stormcloud,好主意我会试一试
标签: j2html