【问题标题】:JSTL: Does Object ExistJSTL:对象是否存在
【发布时间】:2014-05-28 14:59:55
【问题描述】:

当使用 JSTL 构建我的网页时,某些对象可能会传递到 JSP 视图中,而有些则可能不会。 Java 业务逻辑将确定是否需要该对象。

在 JSP 中,检查对象是否已传入的最佳方法是什么。我应该做一个空测试吗?我是否应该有一个“pageContents”列表,其中包含页面使用的所有对象并检查该对象是否在其中。

【问题讨论】:

    标签: jsp servlets jstl


    【解决方案1】:

    发送单个对象,IMO,而不是列表,一个实际对象。就个人而言,我会使用其他方法来指示单个项目是否存在,因为逻辑可能比存在或不存在更复杂,例如业务逻辑。这基本上是演示者模式。

    【讨论】:

    • 假设我正在处理 Product 对象?你的意思是我传入了一个带有 hasProducts 标志的 Products 对象吗?和另一个存储任何可能的 Product 对象的集合成员。然后在我的 JSP 中,我测试 products.hasProducts(),如果是,遍历集合?对吗?
    • 如果您有产品列表,请传递列表。如果没有产品,则传递一个空列表。我指的是整体设计,而不是传入许多对象,而是传入特定于该视图的对象。
    • 好的,我想我明白了。再举一个例子,假设每个产品都有一个联系人成员。生成的 HTML 将显示在浏览器中,即“联系人:Joe Bloggs”。但是,如果产品没有联系人,我根本不希望该部分出现。我不想输出“联系人:”。因此,我必须在输出标签“联系人:”之前测试联系人是否存在。所以对于那个例子,我会使用
    • 我会将它包装在一个提供布尔“showContact()”方法的装饰器中,以避免依赖简单的存在。可以选择使用包含检查和标签 + 值输出的自定义标签。我的目标通常是让以后的视图尽可能简单易读。
    • 装饰器只是一个包装另一个类(例如,组合)并添加/修改功能的类。在这种情况下,它可能会提供一个showContact 方法来确定包装HTML 是否应该是视图。它也可能有一个 contactForDisplay 方法,其中包含“联系人:[firstName] [lastName]”字符串等。不过,有很多方法可以做到这一点。
    猜你喜欢
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 2013-09-26
    • 1970-01-01
    • 2014-10-11
    • 2017-05-13
    相关资源
    最近更新 更多