2009-10-08 62 views
13

我想將主JPS中的List類型對象傳遞給包含JSP(jsp:include)。由於parm僅支持字符串,因此我無法使用parm標記將List類型數據傳遞給包含文件。將列表傳遞給另一個jsp文件

使用例子:

<jsp:include page="/jsp/appList.jsp"> 
    <jsp:param name="applications" value="${applications}"/> 
</jsp:include> 

或者:

<jsp:include page="/jsp/appList.jsp"> 
    <jsp:param name="applications" value="${confirmed_applications}"/> 
</jsp:include> 
<jsp:include page="/jsp/appList.jsp"> 
    <jsp:param name="applications" value="${unconfirmed_applications}"/> 
</jsp:include> 
<jsp:include page="/jsp/appList.jsp"> 
    <jsp:param name="applications" value="${canceled_applications}"/> 
</jsp:include> 

我可以創建一個簡單的標記處理程序,但我想知道如果有一個更簡單的方法。

回答

7

這確實是jsp標籤的意思。創建一個.tag文件,該文件接受屬性(不是參數),它可以是任意類型。

請參閱this article一個很好的教程。

「PARAMS」類似於您在HTTP查詢看到的參數(URL的一部分後的「?」)。

+0

我不知道可以在純JSP中創建taglibs。好人!謝謝! – 2012-07-19 12:20:43

+0

是的,這個效果很好。小記:重要的部分是將屬性的**類型**設置爲對象,否則將被視爲字符串。 '<%@ attribute name =「answers」required =「true」type =「java.lang.Object」%>' – 2014-12-24 23:15:51

3

你是如何獲得在主JSP該名單?

如果你從模型得到它(直接/間接請求/會話屬性),你可以通過屬性的您包含的JSP,並從模型重新獲得它還有:

<jsp:include page="/jsp/appList.jsp"> 
    <jsp:param name="applications" value="confirmedApplications"/> 
</jsp:include> 

如果您正在生成或修改在JSP本身名單,你真的得到更大的問題,那麼這個:-)但你可以綁定您的清單,在某些屬性名稱請求,然後用上面的方法。

0

要麼你可以用請求或會話對象爲轉移的對象。

優點

請求 - 使用請求作爲其生命期與會話對象相比較少。

會話 - 您可以有時在另一個頁面或活動

2

假設你把列表請求範圍,並使用applications爲您的參數,你可以參考清單這樣${requestScope[param.applications]}名稱稍後訪問同一對象

10

與ChssPly76一致,如果在JSP中生成List,它可能是一個麻煩的跡象,但另一種將對象轉換爲其他JSP的替代方法是使用scriplet將其添加到HttpServletRequest對象屬性字段中:

JSP用叔他列出:

<% 
request.setAttribute("theList", ListObject); 
%> 

其他JSP:

<% 
List myList = (List) request.getAttribute("theList"); 
%> 
2

你可以通過requestScope通過List對象:

<c:set var="listApplications" value="${applications}" scope="request"/> 
<jsp:include page="/jsp/appList.jsp" /> 

而且在APPLIST。jsp你可以使用

${requestScope.listApplications} 
0

假設你有parent.jsp和child.jsp。

您希望:

1)包括從parent.jsp child.jsp, 2)從parent.jsp發送一些參數的child.jsp。

執行以下步驟:

1)在parent.jsp '

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 

<c:set var="items" value="${itemsFromDB}" scope="request"/> 
<jsp:include page="child.jsp"/> 

` 2)在child.jsp

<div> 
alert("${requestScope.items}"); 
</div> 

這就是所有。