【问题标题】:Apache Tiles like framework but with no xml configurationApache Tiles 类似框架,但没有 xml 配置
【发布时间】:2016-09-08 02:27:09
【问题描述】:

Apache Tiles 框架很棒。但我讨厌它的一件事是我必须维护的大型 xml 配置文件,即使是分区的,我只是讨厌将编程和演示信息放在配置文件中。

我就是不明白? struts/tiles 的作者是如何达到这种在配置文件中放置这么多表示逻辑的痴迷倾向的?

我正在寻找像 Tiles 这样的框架,但没有血腥的 XML 配置。任何人都可以帮助列出与 Tiles 竞争的基于 Composite View 模型的布局框架。

【问题讨论】:

  • 只是好奇你为什么如此反对这种方法。使用符合某种模式的 XML 语法的文件只是用于开发应用程序的另一种语言。以声明方式指定应用程序行为而不是对其进行编程已经成为一种普遍趋势,我认为大多数人会认识到这是一件好事。有些人讨厌 XML,因为它冗长,但由于它可以很容易地用于设计特定领域的语言,所以它保持了它的突出地位。
  • @Konstantin Komissarchik 别管冗长,完全没有编译时间检查以及必须遍历多个文件才能找到相关代码是它最大的缺点。
  • 是的,缺少适当的工具可能是 DSL 的问题。通常,框架编写者将精力集中在运行时,并没有花足够的时间改进工具/SDK。 DSL 没有可靠的构建时验证、重构支持等没有根本原因。
  • 康斯坦丁,感谢您的详细说明。编译时检查是最大的问题。以及必须阅读和理解令人讨厌的 XML 模式。即便如此,好吧,如果他们坚持使用 XML,至少提供 XML 和 API 方法来做同样的事情。我的意思是,在图块中,将所有演示文稿布局放在一个 XML 文件中,为什么?为什么?为什么?什么时候可以借助 JSP 自定义标签将它放在一个整洁的 jsp 文件中。

标签: java jsp layout


【解决方案1】:

站点网格。 Sitemesh 是一个类似的模板页面系统,但可以在没有 xml 的情况下完成。如果您有一个或两个您反复使用的主要模板,这特别好,无需为每个模板创建一个 xml 条目。它目前是 Grails 中的默认模板系统。 Sitemesh 3 有一些不错的补充,但在撰写本文时仍处于测试阶段,文档几乎为零。它使用了在所有 tile 与 sitemesh 的比较中看到的装饰器模式。


或者,如果您愿意放弃 jsp,您可以尝试 JSF 2.0,它具有 非常 令人印象深刻的模板功能,无需 xml。这与用于服务器端代码的 JSF 组件模型一起肯定有助于减少重复代码。 (作为奖励,JSF 2.0 的 Primefaces 组件库是周围最令人印象深刻的组件/小部件集之一。)

【讨论】:

    【解决方案2】:

    你考虑过Apache Wicket吗?

    通过适当的标记/逻辑分离、POJO 数据模型和令人耳目一新的 XML 缺乏,Apache Wicket 让 Web 应用程序的开发再次变得简单而有趣。用纯 Java 和 HTML 编写的强大、可重用的组件交换样板、复杂的调试和脆弱的代码。

    【讨论】:

      【解决方案3】:

      Apache Tiles 可以是configured without using XML

      【讨论】:

      • 除了提到重写方法 createTilesInitializer() 之外,没有提到如何执行此操作的步骤。而且 Tiles API 复杂得不合理。
      • 他们还展示了从数据库加载定义的示例
      【解决方案4】:

      条纹提供的布局标签非常好。完全不需要任何配置,易于理解和开始使用。它们在某种程度上是如此出色,以至于我认为它们应该从条带中提取出来并作为一个单独的项目在自己的 github 项目空间上进行维护。

      【讨论】:

        【解决方案5】:

        您可以在this SO 帖子中查看带有 Java 配置(无 XML)的 Tiles 示例。

        这个想法是用你自己的TilesDefinitionsConfig 来实现DefinitionsFactory 并调用tilesConfigurer.setDefinitionsFactoryClass(TilesDefinitionsConfig.class);。您的新配置包含布局定义。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-12-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多