【问题标题】:How to keep logic out of a JSP? [duplicate]如何将逻辑排除在 JSP 之外? [复制]
【发布时间】:2013-04-12 02:02:14
【问题描述】:

我需要在 JSP 中构建一个表。 我有一个带有一堆 bean 的数组列表,这些 bean 是由结果集制成的,只是从 DB 调用返回的行中生成的。

根据数据,我想展示不同的东西。 一个例子是,如果 bean 中的名称以“a”开头,则突出显示该名称,如果它以“b”开头,则将名称设为红色但不突出显示(我认为这涵盖了我的问题/情况)。

如果我在 JSP 中没有逻辑,我将如何控制它?

【问题讨论】:

  • “将逻辑保留在 JSP 之外”是指业务逻辑显示逻辑还是程序控制逻辑?

标签: java jsp


【解决方案1】:

这样做的一种方法是编写一个存在于 bean 类中的函数,或者更恰当地说,可能是在 bean 类的包装器中:

public class BeanFormatter {

  private Bean bean;

  public BeanFormatter(Bean myDataBean) {
    this.bean = myDataBean;
  }

  public String getFormattedHTML() {
    //put your logic here. Return the necessary HTML based on the bean.
  }
}

可能您要返回的不是字符串格式的 HTML,而是用于包装数据的 div 名称或其他 css 类。但您可以编写另一种方法,例如 getDisplayCSSClass()

【讨论】:

    【解决方案2】:

    您可以创建一个“翻译器”对象,该对象具有一个(或多个)采用 bean 并返回格式化 HTML 的方法。

    【讨论】:

      【解决方案3】:

      如果您需要查看某些特殊行为,并且想要保持干净的 JSP,您应该考虑创建新标签。 您应该知道,标签的种类很少。 因为你的标签负责创建可视化组件,所以我建议使用标签文件。

      查看此tutorial 以了解其工作原理。

      【讨论】:

        【解决方案4】:

        实际上,逻辑这个词是什么意思?您所描述的事情涉及显示逻辑,可以将这种逻辑放入jsp文件中。大多数 JSTL 标记都是为这项工作而设计的。如果您的意思是业务逻辑,Java 类(ejb、spring bean 或简单类)是其在良好设计中的唯一位置(即使不是在更适合控制逻辑的 servlet/控制器中)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-08-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-21
          • 1970-01-01
          • 2011-11-09
          相关资源
          最近更新 更多