0

一直在使用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>
4

3 回答 3

1

我从来没有用过j2html,但是看例子,如果我没记错的话,我猜语法应该是:

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

更新 2:找到“更好”的方法!

p(new Text("The fox ran over the "), b("the bridge"), new Text(" in the forest"))

或与“帮手”

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")));
    }

}
于 2017-06-19T16:20:56.480 回答
1
<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")
于 2017-08-14T21:36:30.487 回答
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,既不是惊喜也不是什么大不了的事;只是值得注意。希望这可以帮助执行与我相同的搜索的人。

于 2020-08-21T11:47:25.273 回答