【问题标题】:Reference a variable on HTML pages across Java Web Application跨 Java Web 应用程序引用 HTML 页面上的变量
【发布时间】:2015-12-01 17:15:59
【问题描述】:

我在标准 HTML 页面(不是 JSP)上使用带有 Thymeleaf 的 Java Web 应用程序中的 Spring。我在几个页面上有几个文本输入的表单。我想在文本输入中为 maxlength 引用一些变量。例如:

当前:

<input id='name' type='text' maxlength='20' />

目标:

<input id='name' type='text' maxlength='${nameMaxlength}' />

我希望将它们放在我的 Java 代码可以访问的某个文件中,以便客户端和服务器端验证可以引用相同的值。这种功能有什么最佳实践吗?

【问题讨论】:

  • 我不希望在每个会话中都放置一个变量,为它附加一个模型对象,或者将它与特定的语言环境相关联(因为它是相同的)。有没有办法让百里香可以访问每个站点上的文件?
  • 你在使用带有 Thymeleaf 的 Spring 方言吗?

标签: java html spring thymeleaf


【解决方案1】:

如果您将 Thymeleaf 与 Spring 方言一起使用,您可以执行以下操作:

package somepackage;

public final class WebConsts {

   public static final int MAX_LENGTH = 20;

   private WebConsts(){}
}

<input id="name" type="text" th:maxlength="${T(somepackage.WebConsts).MAX_LENGTH}" />

maxlength 中的表达式是标准的 Spring EL 表达式

【讨论】:

  • 我喜欢这个解决方案,因为这意味着您可以从诸如 @Size(max = WebConsts.MAX_LENGTH) 之类的 JSR303 Bean 验证注解中引用常量来提供服务器端验证。
  • @RobertHunt 很高兴听到这个消息!
【解决方案2】:

Fuwesta我使用了很多技巧来减少这种信息的重复。我的标准方法是将信息放入MessageSource。这非常简单,您可以通过#{constant.nameMaxLength} 轻松访问。 另一种方法是将这些信息始终放入模型中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 1970-01-01
    • 2015-12-28
    • 2012-06-28
    • 1970-01-01
    相关资源
    最近更新 更多