Java Web 应用程序属性

Ste*_*Kuo 5 java spring jstl properties jakarta-ee

Java 和/或 Spring 有属性的概念吗?我有一堆领域模型,每个领域模型都有几个属性。例子:

public class Person {
    private String name;
    private Date dateOfBirth;
    private float height;
    private float weight;
    // getters and setters not shown
}
Run Code Online (Sandbox Code Playgroud)

当显示一个人时,属性名称在 JSP 中被硬编码。

Name: ${person.name}<br>
Date of birth: ${person.dateOfBirth}<br>
Height: ${person.height}<br>
Weight: ${person.weight}<br>
Run Code Online (Sandbox Code Playgroud)

此外,可能有几个不同的页面显示一个人。请注意,出生日期是java.util.Date,因此 JSP 或控制器将使用java.text.SimpleDateFormat它来格式化它。身高和体重是数字,它们可能有自己java.util.Format的格式用于格式化。

我正在寻找一种属性查找机制。每个属性(姓名、出生日期、身高等)都有显示名称、格式和描述(用于帮助或工具提示)。属性的属性将在某个配置文件中定义。显示属性时,将通过属性机制查找显示名称和格式。这也将解决本地化问题。

我的问题是是否已经为 Java 实现了这样的东西。

mat*_*t b 1

如果我理解正确的话,您希望能够将其中一些属性的格式和描述放入外部文件中。您可能想看一下 Spring 的MessageSource(在此处链接到javadocResourceBundle ),它在某种程度上进行了包装,并且与JDK 中的类类似。

使用MessageSource's 将允许您将格式和任何文本放置在外部文件中(并且对于不同的语言有不同的属性文件),但我相信您仍然需要在 JSP 中包含要作为参数传递的属性,例如:

<spring:message code="user.dob" arguments="${user.dateOfBirth}"/>
Run Code Online (Sandbox Code Playgroud)

您的文件包含的位置messages.properties

user.dob = Your date of birth is {0}
Run Code Online (Sandbox Code Playgroud)

我不完全确定如何指定 中的格式messages.properties,但我知道这是可能的。