我正在尝试使用Java和webfirmframework生成动态HTML。
有没有办法构建像Table和Div这样的单个组件而不将它们包含在Html()中? 我有超过10多个业务逻辑,每个都生成一个单独的数据表。所有这10个表必须显示在HTML中。
创建一个生成所有这10个表的单一方法会使代码无法读取。
要求是能够构建单个组件,然后将它们连接在一起以生成最终的HTML页面。
这是我尝试过的,它会引发错误。
The constructor Table(MyServiceClass, CustomAttribute, CustomAttribute) is undefined
private void generateTable(final MyCSS hcCss) {
new Table(this,
new CustomAttribute("cellspacing", "0"),
new CustomAttribute("cellpadding", "3")) {{
new TBody(this) {{
new Tr(this) {{
new Td(this,
new Style("padding: 3px")) {{
new NoTag(this, "XXXX");
}};
}};
}};
}};
}
答案 0 :(得分:2)
标记类的第一个参数是其父类,在您的情况下Table
标记没有有效的父级,因此如果您需要,则必须传递null
而不是this
参数生成没有外部html标记的表。
修改您的代码,如下所示
private void generateTable(final MyCSS hcCss) {
Table table = new Table(null,
new CustomAttribute("cellspacing", "0"),
new CustomAttribute("cellpadding", "3")) {{
new TBody(this) {{
new Tr(this) {{
new Td(this,
new Style("padding: 3px")) {{
new NoTag(this, "XXXX");
}};
}};
}};
}};
System.out.println(table.toHtmlString());
}
但是根据您的实际要求,这里是示例代码
public class TableComponentMethods {
public static void embedTable1In(Body body) {
new Table(body,
new CustomAttribute("cellspacing", "0"),
new CustomAttribute("cellpadding", "3")) {{
new TBody(this) {{
new Tr(this) {{
new Td(this,
new Style("padding: 3px")) {{
new NoTag(this, "XXXX");
}};
}};
}};
}};
}
public static void embedTable2In(Body body) {
new Table(body,
new CustomAttribute("cellspacing", "0"),
new CustomAttribute("cellpadding", "3")) {{
new TBody(this) {{
new Tr(this) {{
new Td(this,
new Style("padding: 3px")) {{
new NoTag(this, "Table 2");
}};
}};
}};
}};
}
}
public class WffWebTest extends Html {
private Body body;
public WffWebTest() {
super(null);
setPrependDocType(true);
develop();
}
private void develop() {
body = new Body(this);
}
public Body getBody() {
return body;
}
public static void main(String[] args) {
WffWebTest finalHtml = new WffWebTest();
// this will add table as a child in Body tag
TableComponentMethods.embedTable1In(finalHtml.getBody());
TableComponentMethods.embedTable2In(finalHtml.getBody());
System.out.println(finalHtml.toHtmlString());
}
}
这将打印
<!DOCTYPE html>
<html>
<body>
<table cellspacing="0" cellpadding="3">
<tbody>
<tr>
<td style="padding: 3px;">XXXX</td>
</tr>
</tbody>
</table>
<table cellspacing="0" cellpadding="3">
<tbody>
<tr>
<td style="padding: 3px;">Table 2</td>
</tr>
</tbody>
</table>
</body>
</html>
<强>更新强>
自wffweb 2 version起,您可以使用appendChild
方法add child to a tag。