如何访问自定义EL函数内部的JSP上下文。在自定义EL函数中访问JSP上下文
6
A
回答
7
你必须明确地将它作为实现EL函数的方法的参数。
实现EL功能Java方法:对于EL功能
public static Object findAttribute(String name, PageContext context) {
return context.findAttribute(name);
}
TLD条目:
<function>
<name>findAttribute</name>
<function-class>kschneid.Functions</function-class>
<function-signature>java.lang.Object findAttribute(java.lang.String, javax.servlet.jsp.PageContext)</function-signature>
</function>
用法在JSP:
<%@ taglib prefix="kfn" uri="http://kschneid.com/jsp/functions" %>
...
<c:if test="${empty kfn:findAttribute('userId', pageContext)}">...</c:if>
-1
或者你可以使用一个复杂的伎俩。如果你是用ServletContext
而不是PageContext
确定它会更容易
- 在你EL功能类,定义一个静态
ThreadLocal<PageContext>
变量 - 从一个自定义过滤器,从设置的PageContext
- 存取自由的EL功能
代码例如:
public class MyFunctions {
private static final ThreadLocal<ServletContext> servletContext = new ThreadLocal<>();
public static void setServletContext(ServletContext servletContext) {
MyFunctions.servletContext.set(servletContext);
}
}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException{
...
MyFunctions.setServletContext(servletRequest.getServletContext());
filterChain.doFilter(servletRequest, servletResponse);
}
如果你真的需要PageContext
更好的做一个JSP scritplet setPageContext
,可能在一个包含文件。这有一个缺点,即每个JSP文件都必须执行该包含操作。
相关问题
- 1. 如何访问在EL/JSP
- 2. 如何将float arg传递给自定义EL函数(jsp)?
- 3. 如何在Jsp 2.0中将自定义的VariableResolver添加到JSP上下文以支持特殊的EL?
- 4. JSP:访问枚举JSP EL标签内
- 5. 从JSP EL函数访问隐式对象
- 6. 访问97自定义函数
- 7. 在JSP中解决JSP EL EL
- 8. 如何在Thymeleaf中使用自定义Spring EL函数?
- 9. 在自定义el函数中注入spring bean
- 10. 为什么我为自定义jsp EL函数获取JasperException PWC:6299?
- 11. JSP EL可以直接访问属性
- 12. 可能指定访问JSP EL中的isAttribute vs getAttribute?
- 13. 自定义上下文菜单是否可访问?
- 14. 无法从JSP中访问在WEB-INF下定义的CSS文件
- 15. 如何在jsp中使用JSTL-EL访问HashMap?
- 16. 使用EL或scriptlet代码的jsp自定义标记文件中的getRealPath()
- 17. 不带参数的自定义EL函数 - 可能吗?
- 18. JSP EL定制函数中的异常处理实践
- 19. 在匿名函数中访问上下文
- 20. 访问在不同文件中定义的javascript函数
- 21. 在另一个函数中定义的访问函数
- 22. 在python中定义自定义函数
- 23. JSP标记处理程序访问上下文参数
- 24. 在javascript函数中通过EL访问模型对象?
- 25. Laravel 5访问视图中的自定义函数
- 26. 如何使用JSP EL动态访问请求参数?
- 27. 为什么我不能在自定义标签中使用JSP EL?
- 28. javascript:在函数的上下文中定义“this”
- 29. 在jsp中启用el
- 30. 在TestRule中访问自定义注释
“自定义EL功能”是什么意思? – skaffman 2011-03-15 15:47:25
@skaffman:参见http://stackoverflow.com/questions/2523430/hidden-features-of-jsp-servlet的“EL函数”部分。 @Viren:你究竟需要什么JSP上下文?即您想要调用/获取哪些方法/信息?在任何情况下,答案都是:只需将该信息作为函数参数传递即可。 – BalusC 2011-03-15 17:56:33