我要求在JSP中引用Java代码(在我的例子中是枚举值)的一些意见。
我目前在JSP中有条件逻辑,如:
<c:if test="${actionBean.order.status eq 'complete'}">
show some stuff
</c:if>
现在,'complete'是与我的代码库中的枚举相关联的值。在我的JSP中引用枚举会更好吗?如果是这样,怎么样?
我认为这可能是一件好事,因为:如果枚举发生变化,那么JSP就不会中断。
将Java代码混合到JSP中是不好的做法?或者复制'完整'的值是否更糟?
提前致谢。
答案 0 :(得分:1)
将Java代码混合到JSP中是不好的做法?或者复制'完整'的值是否更糟?
我的观点是你应该避免将Java代码与JSP混合,即使它意味着一些有限的符号/值重复。
以这种方式思考:可以在Java端进行许多可能“破坏”JSP的更改。例如,在这种情况下,“actionBean”的名称,getOrder()
或getStatus()
方法可能会发生变化。或getOrder()
可以返回null
或其他类型的内容。如果你担心Java方面可能发生的所有变化,你最终根本就不会使用taglib。
答案 1 :(得分:1)
您在JSP中与之比较的枚举值实际上与String.valueOf(enum)
相同,默认情况下,这恰好是枚举名称。因此,如果您更改枚举的名称,那么您还应该更改JSP代码。所以我认为与实际枚举对象进行比较没有任何好处。它也会被String
强加给String.valueOf(enum)
,你最终会将两个String
相互比较。保持原样。
关于在JSP文件中引用Java代码:
HttpServlet#doGet()
。HttpServlet#doPost()
。 HttpServlet
中直接引用的所有Java代码都可以进一步细分:
答案 2 :(得分:0)
你不能为你是否想要在JSP之外“显示一些东西”而只是传递一个简单的布尔参数来判断是否要显示这些东西吗?这样你就可以避免重复枚举值,并且在控制器中而不是在视图中保留那一点逻辑。