使用j2html从Java创建html,运行良好但我不明白当我想要这样的东西时如何使用
<p>The fox ran over the <b>Bridge</b> in the forest</p>
如果我这样做
import static j2html.TagCreator.*;
public class HtmlTest
{
public static void main(String[] args)
{
System.out.println(p("The fox ran over the " + b(" the bridge") + "in the forest"));
}
}
我得到了
<p>The fox ran over the <b>the bridge</b> in the forest</p>
即它将粗体视为文本。
注意只做
import static j2html.TagCreator.*;
public class HtmlTest
{
public static void main(String[] args)
{
System.out.println(p(b("the bridge")));
}
}
正确渲染
<p><b>the bridge</b></p>
答案 0 :(得分:1)
我从未使用过j2html,但是看example,如果我没错,我想语法应该是:
p("The fox ran over the ", b(" the bridge"), "in the forest")
抱歉,我的公司环境不允许我下载Eclipse等进行测试..
更新:上面错了。但我找到了一种方法 - 尽管它相当复杂:
p("The fox ran over the ").with((DomContent)b("the bridge")).withText(" in the forest")
输出:
<p>The fox ran over the <b>the bridge</b> in the forest</p>
(DomContent)
可以删除但我保留澄清。我想逻辑是,如果任何添加为文本的内容都会被转义,那么使它工作的唯一方法就是添加DomContent
或ContainerTag
。
更新2:&#34;更好&#34;方式找到了!
p(new Text("The fox ran over the "), b("the bridge"), new Text(" in the forest"))
或使用&#34;帮助&#34;
import static j2html.TagCreator.*;
import j2html.tags.Text;
public class Test {
private static Text $(String str) {
return new Text(str);
}
public static void main(String[] args) {
System.out.println(p($("The fox ran over the "), b("the bridge"), $(" in the forest")));
}
}
答案 1 :(得分:0)
<p>The fox ran over the <b>Bridge</b> in the forest</p>
可以写成
p(join("The fox ran over the", b("Bridge"), "in the forest")
答案 2 :(得分:0)
我之所以发布此答案,是因为这是我搜索“ j2html insert html”时出现的最早结果之一;本质上,我希望将HTML文本插入使用j2html构建的文件中。事实证明,j2html.TagCreator#join
方法也可以在不转义的情况下合并文本,因此,请执行以下操作:
System.out.println(html(body(join("<p>This is a test</p>"))).render());
System.out.println(html(body(join("<p>This is a test</p><p>Another Test</p>"))).renderFormatted());
System.out.println(html(body(p("This is a test"), p("Another Test"))).renderFormatted());
输出以下内容:
<html><body><p>This is a test</p></body></html>
<html>
<body>
<p>This is a test</p><p>Another Test</p>
</body>
</html>
<html>
<body>
<p>
This is a test
</p>
<p>
Another Test
</p>
</body>
</html>
请注意,renderFormat
方法不会呈现联接的HTML,这既不会令人惊讶,也不会带来很多麻烦。只是值得注意。希望这可以帮助某人执行与我相同的搜索。