2014-07-24 2 views
0

데이터베이스에서 데이터를 가져 와서 하나의 JSP (예 : One.jsp)의 콜렉션 오브젝트에 저장합니다. 이 컬렉션 객체를 다른 JSP에서 사용할 수있게하려고합니다 (Two.jsp라고 말하면됩니다). 대용량 데이터가 포함될 수 있습니다. 그래서, 나는 다음과 같은 방법으로 java bean을 사용했다.컬렉션 오브젝트를 하나의 JSP에서 다른 JSP로 옮기기

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에 콩을 설정하고있다.

Can't find a method to write property 'dataMap' of type 'java.util.HashMap' in a bean of type 'com.mypack.BeanClass' 

어딘가에 나는 그것이 문자열이 아닌 경우 우리는 다른 것들에 대한 설정을 할 수 없다는 발견

<jsp:useBean id="dataObject" class="com.mypack.BeanClass" scope="session"/> 
<jsp:setProperty name="dataObject" property="myMap"/> 
<% 
    dataObject.setData(myMapObj); 
%> 

는 그러나 나는 다음과 같은 오류가 발생합니다. 어쨌든 컬렉션 객체에서도 작동하도록 해결할 수 있습니까? 그래서 나는 내가 한 많은 일들을 롤백 할 필요가 없다. 누군가가 하나의 JSP에서 다른 JSP로 컬렉션 객체를 전송하는 방법을 제안 할 수 없다면? 스 니펫을 사용한 예가 좋습니다.

콩을 작동시키기위한 몇 가지 추가 구성이 누락 되었습니까?

참고 : 내가 사용했을 수도 리디렉션() 메소드, 그러나 여기 Two.jsp에 One.jsp에서의 탐색은 하이퍼 링크 (HREF)을 클릭하면됩니다

편집 :

Alfreema 덕분에. 그의 솔루션은 setMyMap으로 바꾼 후에 작동했지만, Two.jsp에서는 문제가 발생했습니다. 나는 아래와 같이지도의 일부분만을 표시하려고 노력한다. 하지만 Map에있는 모든 것을 표시 할 때처럼 표시합니다. outprintln (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> 

는 전체 모음을 인쇄 코딩없이 그렇게하지 왜 혼란 스러워요.

답변

2

변경이 : 여기에

<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)를 통해 태그에 사용할 수 있도록했다고 가정해야합니다. 요구.

사이드 노트 : getData getMyMap (...)과 일관되도록 setData (..) 메소드의 이름을 setMyMap (...)으로 바꾸는 것이 좋습니다. 그렇게하면 속성을 "myMap"으로 다시 바꿀 필요가 있습니다.

+0

어리석은 저, 이것이 문제라고 생각합니다. 정말 고마워요. 그것을 테스트. – Kanth

+0

그게 효과가 있어요. 하지만 지금은 Two.jsp에서 문제가 발생합니다. 내 편집을 들여다 볼 수 있니? – Kanth

+0

그건 완전히 새로운 문제입니다.나는 그것을 위해 새로운 질문을 열 것을 조언 할 것이다. – alfreema

관련 문제