无法从自定义JSP标记文件中的方法内访问隐式对象

时间:2010-06-02 14:49:00

标签: java jsp custom-tags

我正在尝试创建自定义jsp标记。一切都工作正常,除了我的请求似乎超出我的自定义功能的事实。

以下是.tag文件中的相关位:

<%!
private  String process(String age, BigDecimal amount)
        {
//Attempting to access request here results in an compile time error trying to:
String url=request.getURL;
        }
%>

我对JSP很新,所以我确定我错过了一些明显的东西......但我似乎无法弄清楚是什么。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

我怀疑这是因为自定义函数本身并未在JSP的服务调用的主执行中定义,而是在生成的JSP类中定义为单独的方法。因此,request变量隐式不可见。

为了澄清一下,如果您查看了JSP编译器生成的java源代码(特定于appserver),您将看到它是如何挂起的。

我认为您必须将请求对象声明为函数的参数,并在调用它时将其传入。

<%!
private String process(String age, BigDecimal amount, ServletRequest request) {
   String url=request.getURL;
   ....
}
%>