2011-09-09 4 views
1

여기에 제가하려는 일이 있습니다. jsf page1의 데이터를 page1에서 열린 팝업 창인 jsf page2에서 사용할 수있게하려고합니다. 둘 다 별도의 관리 빈을 갖습니다. 세션을 사용해 보았지만 null 포인터가 발생했습니다. 나는 어떻게 든 javascript에서 window.opener()를 사용하여 page2에서 데이터를 가져올 수있었습니다. 이제이 데이터를 FacesPortlet의 processAction() 메소드에서 사용할 수있게하려고합니다. request.getParameter, request.getAttributes를 모두 사용해 보려합니다. 많은 연구 끝에 어떻게 든 processAction() 메서드에서 하드 코딩 된 데이터를 보낼 수있었습니다. 그러나 page1에서 값을 보낼 수 없습니다. 다음은 하드 코딩 된 값을 보내는 방법입니다.하나의 JSF 페이지에서 FacesPortlet의 ProcessAction() 메소드로 데이터를 전송하십시오.

<form name="uploadbaseline" method="post" 
enctype="multipart/form-data" action="<portlet:actionURL><portlet:param name =   "page" value = "someval"/></portlet:actionURL>"> 

다음은 양식 내의 다른 입력란이옵니다. 이

System.out.println("valuefrompage1"+request.getParameter("page")); 

같은 내가의 processAction의 값을 얻을 수() 메소드는이 "someval"를 반환합니다. 이제 다음 코드를 사용하여 javascript를 사용하여 page1의 값을 할당하려고합니다.

var val =  window.opener.document.getElementById("BaseLine:EngineModel").value;  
var actionval = "<portlet:actionURL><portlet:param name='page' value=" + val.value + "/></portlet:actionURL>";  
document.uploadbaseline.action = actionval.value; 
document.uploadbaseline.submit(); 

이이 값을 반환합니다 "+ val.value +"그대로하고 "발"변수가 아닌 실제 값.

나를 올바른 방향으로 인도하십시오. 답장을 기다리겠습니다. 감사합니다. .

+0

내 검색어를 게시하는 방식에 혼동이 있으면 알려 주시기 바랍니다. 같은 것을 분명히하기 위해 열심히 노력할 것입니다. – Waheeb

+0

죄송합니다. 포틀릿을 사용하지 않습니다. – BalusC

+0

window.opener 및 쿼리 문자열 이외의 상위 페이지 값을 가져 오는 방법이 있습니까 ?? – Waheeb

답변

0

마지막으로 해결책을 찾았습니다. 문제는 내 양식의 enctype 속성에 있습니다. 이렇게하면 일반 request.getParameter를 사용하여 페이지 필드에 액세스하지 못하게됩니다. 다른 방법으로 처리해야합니다. 방법은 다음과 같습니다.

for (Iterator requestItems = upload.parseRequest(request).iterator(); requestItems.hasNext();) { 
    item = (FileItem) requestItems.next(); // Get each item in the request 
    if (!item.isFormField()) { 
     //handle the file data 
    } else { 
     System.out.println((String)item.getString()); 
    } 
} 
관련 문제