簡體   English   中英

如何在JSP聲明中使用JSTL

[英]How to use JSTL within JSP declaration

我想在JSP聲明中使用JSTL。 我有這樣的代碼:

<%! void fetchData(String .., String ..){
    //some code...
    pageContext.setAttribute("test",valueForJSTL); // Wont work until I pass pageContext from calling scriptlet
    //some code...
%><%
    //use pageContext variable set above to user in JSP (c:out, wcf:getData etc)**
%><%
}%>

我想知道為什么不允許在JSP聲明中使用scriptlet(第5-7行)。 還是有其他方法可以解決這個問題?

我正在從scriptlet調用上述函數,並且我希望此方法進行一些操作,在pageContext / request中添加一個變量,並在JSTL中獲取該變量以從DB中獲取數據。

您可以在以下位置找到完整的文件: http ://wikisend.com/download/738986/MyView.jsp聲明“ fetchCatalogEntries”中的JSTL不起作用。

這是因為為scriptlet <%%>生成的代碼進入了service方法,就像使用多個請求線程再次在同一對象上調用一樣

而<%!,進入全局類空間或只是聲明JSP頁面的全局方法和變量。

因此,在您的scriptlet中,您可以調用方法fetchData()或其他任何方法,就像在普通Java類中的service()方法中一樣。

您甚至可以如下聲明一個字段,並按以下示例引用它:

<%!
    private final Logger logger = new Logger(this.getClass());
    private UserService userService = null;
    public void jspInit() {
        userService = new UserService();
    }
    private String getUserStatus(String userID) {
        return userServce.getUserStatus(userID);
    }
%>

<%
    String userID = request.getParameter("userid");
    String userStatus = getUserStatus(userID);
%>

最后,我建議您不要使用scriptlet,而應使用JSTL標簽和庫,例如core-tag-libs和許多其他標簽,這些將長期幫助您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM