【发布时间】:2011-07-18 08:18:57
【问题描述】:
我正在将旧应用程序从 JSP 1.1 迁移到 JSP 2.1,并尝试在没有 scriptlet 的情况下完成所有工作。我有一个 JavaBean,我通过 CustomTag 创建、填充并插入到页面范围中。该 JavaBean 公开了一些基于其实例变量转换数据、生成 HTML sn-ps 等的方法。
当我需要访问我使用的 JavaBean 中的属性时:
${mybean.property}
但由于 JSP 2.1/EL 2.1 不支持在您的 bean 上调用方法(这需要 JSP 2.2/EL 2.2),我正在尝试确定将此类实用程序方法公开给我的 JSP 页面而不诉诸于脚本。
这是我需要访问的 JavaBean 上的方法示例:
public String getThumbColor() {
String tbgcolor = "#FF0000";
if (this.getJavaBuildTotal() > 0 &&
this.getJavaBuildBroke() == 0 &&
this.getCeeBuildBroke() == 0 &&
this.getJavaBuildInvalid() == 0 &&
!this.hasBuildException()) {
tbgcolor = "#00FF00";
}
else if (this.getJavaBuildTotal() == 0 && this.getCeeBuildTotal() == 0) {
tbgcolor = "#f7f814";
}
return tbgcolor;
}
感觉在 JSP 中将这个(以及大约 10 个类似的方法)完全转换为 JSTL 会弄乱我的 JSP 页面。
由于我已经在进行大型重构,我不介意进行剧烈的更改;但无论如何我都想不出消除我对某些使用条件来决定返回值、生成小型 HTML sn-ps 等方法的需求。
【问题讨论】:
-
我可以假设你说的是
public static方法当你说实用方法? -
好吧,它们目前不是公共静态的。由于这些方法存在于现在已成为从 JSP 访问的 javabean 的 java 类中。他们根据类中的实例变量做出决定并做出相应的响应。我确实理解一种解决方案是将这些“实用程序”方法从 javabean 中移出,并作为将 java bean 作为参数的静态方法移到自定义标记中。
标签: java jsp jakarta-ee jsp-tags el