[英]Hibernate - Transferring a Collection of objects from one parent object to another
[英]Transferring collection object from one jsp to another
我從數據庫中獲取數據,並將其存儲在一個jsp(例如One.jsp)中的某個集合對象中。 我希望這個集合對象可以在另一個jsp中使用(例如Two.jsp)。 它可能包含大數據。 因此,我通過以下方式為此使用了Java bean。
public class BeanClass implements Serializable{
private HashMap<String,List<String>> myMap;
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public HashMap<String,List<String>> getMyMap() {
return myMap;
}
public void setData(HashMap<String,List<String>> myMap) {
this.myMap = myMap;
}
}
我通過以下方式在One.jsp中設置bean。
<jsp:useBean id="dataObject" class="com.mypack.BeanClass" scope="session"/>
<jsp:setProperty name="dataObject" property="myMap"/>
<%
dataObject.setData(myMapObj);
%>
但是我收到以下錯誤:
Can't find a method to write property 'dataMap' of type 'java.util.HashMap' in a bean of type 'com.mypack.BeanClass'
我發現某個地方指出除非字符串,否則我們無法做其他事情。 無論如何,我是否可以解決它以使其甚至適用於集合對象? 這樣我就不需要回滾很多我已經做的事情。 如果不能,請建議如何將收集對象從一個jsp轉移到另一個jsp? 帶有片段的示例是值得贊賞的。
還是我缺少一些額外的配置來使bean工作?
注意:我可能已經使用過redirect()方法,但是在這里從One.jsp到Two.jsp的導航是通過單擊超鏈接(href)完成的
編輯:
感謝Alfreema。 在我更改為setMyMap之后,他的解決方案起作用了,但是在Two.jsp中,我遇到了問題。 我嘗試僅顯示地圖的某些部分,如下所示。 但是它顯示Map中的所有內容,就像我們使用out.println(myMap);時顯示的一樣。 在打印整個地圖的內容后,它會在頁面的最后顯示表格。
Two.jsp:
<jsp:include page="header.jsp"/>
<jsp:useBean id="dataObject" class="com.mypack.BeanClass" scope="session"/>
<jsp:getProperty name="dataObject" property="myMap"/>
<%! HashMap<String,List<String>> gottenMap = null; %>
<%
gottenMap = dataObject.getMyMap();
%>
<table>
<tbody>
<%
String selectedPart = request.getParameter("part");
List<String> list = gottenMap.get(selectedPart);
for(int i=0; i<list.size(); i++)
{
%>
<tr>
<td colspan='2'><strong>
<%= list.get(i) %>
</strong></td>
</tr>
<%
}
%>
</tbody>
</table>
我很困惑為什么它會這樣做而沒有編碼來打印整個集合。
更改此:
<jsp:useBean id="dataObject" class="com.mypack.BeanClass" scope="session"/>
<jsp:setProperty name="dataObject" property="myMap"/>
<%
dataObject.setData(myMapObj);
%>
對此:
<jsp:useBean id="dataObject" class="com.mypack.BeanClass" scope="session"/>
<jsp:setProperty name="dataObject" property="data" value="${myMapObj}"/>
您的設置程序稱為“ setData(...)”,而不是“ setMyMap(...)”。 JSP將看到property =“ data”並調用setData(...)。
這樣可以解決您的問題,但是您沒有向我們顯示設置myMapObj的位置。 我們必須假設您在其他地方正確設置了該功能,並已通過pageContext.setAttribute(“ myMapObj”,myMapObj)將其提供給標簽。 呼叫。
旁注:我建議您將setData(..)方法重命名為setMyMap(...),以使其與getter getMyMap(...)保持一致。 如果這樣做,則需要將屬性=“ ...”改回“ myMap”,就像您擁有它一樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.