Java和/或Spring有属性的概念吗?我有一堆域模型,每个域模型都有几个属性。示例:
public class Person {
private String name;
private Date dateOfBirth;
private float height;
private float weight;
// getters and setters not shown
}
在显示person时,属性名称是在JSP中硬编码的。
Name: ${person.name}<br>
Date of birth: ${person.dateOfBirth}<br>
Height: ${person.height}<br>
Weight: ${person.weight}<br>
此外,可能有几个不同的页面来显示一个人。请注意,出生日期是一个java.util.Date
,因此JSP或控制器将使用java.text.SimpleDateFormat
对其进行格式化。身高和体重都是数字,它们可能有自己的java.util.Format
用于格式化。
我要找的是一种属性查找机制。每个属性(名称、出生日期、身高等)将具有显示名称、格式和描述(用于帮助或工具提示)。属性的属性将在某个配置文件中定义。当显示属性时,将通过属性机制查找显示名称和格式。这也将解决本地化问题。
我的问题是,是否已经为Java实现了类似的东西。
发布于 2009-01-28 15:01:33
如果我理解正确的话,您希望能够将其中一些属性的格式和描述放在一个外部文件中。您可能想看看Spring的MessageSource
(链接到javadoc here),它有些类似于JDK中的ResourceBundle
类。
使用MessageSource
的将允许您将格式和任何文本放在外部文件中(并且对于不同的语言具有不同的属性文件),但我相信您仍然需要在您的JSP中包含哪些属性作为参数传递,例如:
<spring:message code="user.dob" arguments="${user.dateOfBirth}"/>
其中,您的messages.properties
文件包含:
user.dob = Your date of birth is {0}
我不完全确定如何在messages.properties
中指定格式,但我知道这是可能的。
发布于 2009-01-28 15:35:16
要使用JSP和JSTL实现这一点,您可以使用"fmt“标记库,它支持数字、日期等的本地化和格式化。
在您发布的示例中,代码如下所示:
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%-- ..assuming bundle and locale are already set... --%>
<fmt:message key="NAME" bundle="${myBundle}"/>: ${person.name}<br>
<fmt:message key="DOB" bundle="${myBundle}"/>: <fmt:formatDate type="date" value="${person.dateOfBirth}"/><br>
<fmt:message key="HEIGHT" bundle="${myBundle}"/>: <fmt:formatNumber pattern="##.##" value="${person.height}"/><br>
<fmt:message key="WEIGHT" bundle="${myBundle}"/>: <fmt:formatNumber pattern="##.##" value="${person.weight}"/><br>
发布于 2009-01-28 14:44:01
您想要提供的一些信息非常适合BeanInfo对象,该对象最初的目的是支持JavaBeans内容--我不知道它是否仍在使用,以及它是否会以您想要的方式使用。
另外,spring:message标签提供了对静态文本i18n的支持,但我认为它不会轻易与您的bean绑定在一起。
https://stackoverflow.com/questions/487826
复制相似问题