如何訪問自定義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. 如何從EL中的JSP訪問getColumnNames?
- 6. 訪問JSP中定義的數組
- 7. 從JSP EL函數訪問隱式對象
- 8. 訪問自定義內部函數JQueryFunction
- 9. 訪問97自定義函數
- 10. 在JSP中解決JSP EL EL
- 11. 如何在Thymeleaf中使用自定義Spring EL函數?
- 12. 在自定義el函數中注入spring bean
- 13. 自定義python函數所在的訪問文件夾
- 14. 爲什麼我爲自定義jsp EL函數獲取JasperException PWC:6299?
- 15. JSP EL可以直接訪問屬性
- 16. 可能指定訪問JSP EL中的isAttribute vs getAttribute?
- 17. Aurelia:訪問自定義元素的自定義函數或自定義屬性
- 18. 自定義上下文菜單是否可訪問?
- 19. Android自定義序列化訪問上下文
- 20. 在自定義上下文中繪製
- 21. 在SQL中使用自定義函數訪問VBA
- 22. 無法從JSP中訪問在WEB-INF下定義的CSS文件
- 23. 如何在jsp中使用JSTL-EL訪問HashMap?
- 24. Python中,定義函數和訪問它
- 25. 我如何自定義OS X El Capitan上的NSToolbar上下文菜單?
- 26. 使用EL或scriptlet代碼的jsp自定義標記文件中的getRealPath()
- 27. 不帶參數的自定義EL函數 - 可能嗎?
- 28. 在匿名函數中訪問上下文
- 29. JSP EL定製函數中的異常處理實踐
- 30. 訪問在不同文件中定義的javascript函數
「自定義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