如何使用j2html java将包含html的文本呈现为html lib

时间:2017-06-16 11:01:40

标签: java html j2html

使用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 &lt;b&gt;the bridge&lt;/b&gt; 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>

3 个答案:

答案 0 :(得分:1)

我从未使用过j2html,但是看example,如果我没错,我想语法应该是:

< S>
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)可以删除但我保留澄清。我想逻辑是,如果任何添加为文本的内容都会被转义,那么使它工作的唯一方法就是添加DomContentContainerTag

更新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,这既不会令人惊讶,也不会带来很多麻烦。只是值得注意。希望这可以帮助某人执行与我相同的搜索。