Java HTML Builder(反模板)库? [关闭]
Posted
技术标签:
【中文标题】Java HTML Builder(反模板)库? [关闭]【英文标题】:Java HTML Builder (anti-template) library? [closed] 【发布时间】:2011-04-04 18:33:42 【问题描述】:我一直在寻找能够轻松创建有效 (X)html sn-ps 的现代 Java 库。
是的,您可以使用模板语言,但有时您不想这样做,因为与插入您最喜欢的模板语言相比,Java 有一些优势。
我在许多项目中看到了很多内部 HTML 构建器,但我找不到 Commons-HTML 构建器。
有人知道吗?
如果它利用 Java 5/6/7 类型系统(泛型)并支持 Fluent Style,那将是理想的选择。 或者类似 fluent 风格的东西,即 JQuery 风格链接,或者用于模拟 JMock 等库的状态机(学究式地说是 Monad)。
一个粗略的构建器示例可能是:
new Html().title("stuff").body().in().div().in().h1("Hello World").hr();
另一个例子: http://codemonkeyism.com/the-best-markup-builder-i-could-build-in-java/
最后我自己写了:Java Anti-template Language (JATL)
【问题讨论】:
另一种选择是使用 JAXB 的 Fluent Plugin 【参考方案1】:我最终编写了自己的库,名为 Java Anti-template Language (JATL)
【讨论】:
看起来不错,还在更新吗? 是的。我需要尽快添加 HTML 5。可能会在几周内添加它。它现在也在公共 maven 存储库中。 干得好!如果内部元素可以进入构造函数内部会更好:body(h1(), div(table(...)))
@XieJilei 是的,我正在考虑在主要版本中为喜欢 lisp 风格的 S 表达式的人添加它。朝着这个方向发展存在一些评估挑战(即,您希望在 h1 标记之前写入正文标记......否则您将不得不缓冲整个文档)。
@ed22 是的,与这些拥有精美网页的新孩子相比,JATL 看起来已经过时了 :) 。 j2html 看起来它不是流式传输的,因此如果您使用大型文档,它可能会出现内存问题(请参阅我之前关于 S 表达式的 cmets)。 rendersnake 看起来与 JATL 非常相似,尽管它具有更好的代码生成器和类型的使用,但却失去了简单性和可扩展性。有趣的是,我现在更多地将 JATL 用于非 HTML 标记(即 XML),这两个较新的库似乎都不支持。【参考方案2】:
您尝试过Jakarta Element Construction Set (ECS) 项目吗?
它并不是一个真正流畅的 API - 让我想起 StringBuilder 而不是 Mockito...但在功能上我认为它是你所追求的。
【讨论】:
这绝对是朝着正确方向迈出的一步(+1) 我认为我们有一个赢家。多么可怕的不友好的 SEO 项目名称 :) 你的权利可能不是很流利,因为它涉及状态机。如果有的话,它实际上更像是一个 Monad。想想 JQuery。 它对我来说仍然很笨重并且不支持 XHTML。 现在已经不再开发了。【参考方案3】:您最好的选择可能是使用 XML 库并将输出呈现为 HTML。
I.E. Dom4J 为特定于 HTML 的 XML 输出定义了一个 HtmlWriter 类。
但您仍然必须在其之上创建自己的 api 才能实际创建文档。
【讨论】:
Dom4J 的恼人问题是它缺乏对泛型的支持。即 node.elements() 返回一个 List> 不是 List以上是关于Java HTML Builder(反模板)库? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
使用 lombok @Builder 时通过 Jackson 反序列化“2021-09-24 00:00:00”日期格式
Java Jackson将空字段反序列化为POJO中的默认空列表
Java:使用json-SpringBoot中的“@class”将json反序列化为rest模板中的对象
一个现代化的JSON库Moshi针对Android和Java
Grails REST Client Builder 在处理来自 Jersey Web 服务的响应时收到 JSON 反序列化错误