在为JSP表达式语言定义函数时,有没有办法指定函数需要一个隐式对象(例如pageContext
)?
我想定义一个由
实现的函数${my:href('a.jpg')}
public static String href(String fileName, PageContext pageContext)
但我不希望每次调用时都必须将pageContext显式传递给函数。
答案 0 :(得分:2)
只有当您将(通过过滤器或其他东西)存储为线程局部变量时,才能访问“隐式”对象。然后你可以编写一些实用程序类来从任何有意义的上下文中获取它们。一些框架(例如Stripes)(yaay Stripes!)使相对容易。
答案 1 :(得分:2)
考虑使用标签而不是功能。标签为您提供了对继承的TagSupport#pageContext
隐式访问PageContext
。
答案 2 :(得分:1)
这会很好但不是,没有办法直接这样做。此外,由于JSP EL函数必须为public static
,因此没有解决方法。所以解决方案是回到普通的旧JSP代码:
<% Helper my= new Helper (pageContext); %>
Helper
有一个普通的公共方法,它以文件名作为参数:
public String href (String fileName) { ... }
以后
... ${my.href(...)}