Spring MVC强制实施所需的模型属性

时间:2011-10-14 14:37:15

标签: java spring model-view-controller

我一直在使用Spring MVC并且有一个我认为与MVC有关的问题。我正在寻找一种方法来强制(或至少更好地记录)模型和特定视图之间的契约。即,每个视图都有一组必需的模型属性,但要找到这些属性,编写控制器的人必须读取/理解整个JSP(除了包含任何标记或其他JSP),以便他们可以适当地填充模型在返回此视图之前。或者您可以查看返回此视图的其他位置并向后工作,尝试确定哪些属性是必需的,哪些属性是可选的。这些都不是特别吸引我。

答案是人口过多吗?我不是特别喜欢这个想法。我想要的是一种以每个视图为基础以编程方式记录(或更好地,强制执行)这些必需属性的方法。我在Spring文档中找不到解决此问题的任何内容。有没有人有任何想法或想法?

我想到的一件事是每个模块都有一个Enum视图。 Enum中的每个常量都有视图名称和一组必需的模型属性(可能还有一组单独的可选属性)。然后,控制器方法将返回此枚举的成员,此时可以验证模型(使用类似于model.keySet()。containsAll(viewEnum.requiredAttributes()))。它仍然是一个运行时错误,但至少程序员可以查看此枚举,并非常清楚地看到每个视图需要哪些模型属性。

1 个答案:

答案 0 :(得分:0)

您还没有考虑过问题的一个方面:数据依赖约束。

例如,如果你的jsp中有一个简单的if,那么这会使整个事情变得更复杂:

<c:if test="${formated}" >
   <c:out value="${prefix}">
</c:if>
<c:out value="${value}">
<c:if test="${formated}" >
   <c:out value="${postfix}">
</c:if>

所以总的来说,我相信没有简单的解决方案(mybe有一个非常复杂的解决方案。)