关于java:如何将逻辑排除在JSP之外?

How to keep logic out of a JSP?

本问题已经有最佳答案,请猛点这里访问。

我需要在JSP中构建一个表。我有一个包含大量bean的arraylist,bean是从resultset生成的,只是从db调用返回的行中生成的。

根据数据,我想展示不同的东西。例如,如果be an中的名称以"a"开头,则突出显示该名称;如果名称以"b"开头,则使该名称变为红色,但不突出显示(我认为这涵盖了我的问题/情况)。

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


这样做的一个方法是编写一个函数,该函数位于bean类中,或者更适合于bean类的包装器中:

1
2
3
4
5
6
7
8
9
10
11
12
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()


实际上,在逻辑这个词下你是什么意思?您描述的内容与显示逻辑相关,允许将此类逻辑放入JSP文件中。大多数JSTL标记都是为这个工作设计的。如果您是指业务逻辑,Java类(EJB、Spring Bebean或简单类)是其良好设计的唯一地方(甚至不在servlet /控制器中,这对于控制逻辑来说更好)。


如果您需要在视图上有一些特殊的行为,并且想要保持干净的JSP,您应该考虑创建新的标记。你应该知道有几种不同的标签。因为您的标记负责创建可视组件,所以我建议您使用标记文件。

查看本教程以了解其工作原理。


您可以创建一个"translator"对象,该对象有一个(或多个)方法接受bean,并返回格式化的HTML。