簡體   English   中英

如何通過跨上下文 JSTL 導入將參數傳遞給 JSP?

[英]How do I pass a parameter to a JSP via a cross-context JSTL import?

我遇到了一些其他問題,這些問題描述了與我相似但不完全相同的情況。 例如, 這個問題顯示了幾乎相同的問題,除了我沒有使用 portlet - 我只是使用無聊的 ol' JSP+JSTL+EL+ 等。

我有兩個應用程序上下文,我想將 JSP 從一個導入到另一個。 我知道怎么做:

<c:import context="/" url="/WEB-INF/jsp/foo.jsp"/>

但是,我還想將參數傳遞給導入的foo.jsp 但是這段代碼:

<c:import context="/" url="/WEB-INF/jsp/foo.jsp">
    <c:param name="someAttr" value="someValue"/>
</c:import>

似乎沒有正確地將參數發送到foo.jsp 如果foo.jsp是這樣的 *

<% System.out.println("foo.jsp sees that someAttr is: "
                      + pageContext.findAttribute("someAttr")); %>

然后打印出來:

foo.jsp sees that someAttr is: null

而我想看到這個:

foo.jsp sees that someAttr is: someValue

所以,很明顯,在foo.jsp找不到someAttr

我該如何解決這個問題?


*(是的,我知道, scriplets==bad ,這只是為了調試這個問題)

您將其設置為請求參數,因此您也應該將其作為請求參數獲取。

由於您似乎也不喜歡 scriptlet,這里有一個 EL 解決方案:

${param.someAttr}

請注意,在這種特殊情況下, <c:import>沒有在<jsp:include>之上添加任何額外的優勢。 當您想從不同的上下文或完全不同的域導入文件時,它很有用,但現在似乎並非如此。 以下也應該有效:

<jsp:include page="/WEB-INF/jsp/foo.jsp">
    <jsp:param name="someAttr" value="someValue" />
</jsp:include>

這樣,包含的頁面可以訪問與主 JSP 相同的PageContextHttpServletRequest 這最終可能會更有用。

暫無
暫無

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

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