Перенос данных с одной страницы JSF в метод ProcessAction () FacesPortlet - PullRequest
1 голос
/ 09 сентября 2011

Вот что я пытаюсь сделать. Я хочу, чтобы данные из jsf page1 были доступны в jsf page2, который является всплывающим окном, открытым page1. Оба имеют отдельные управляемые бины. Я пытался использовать сессии, но это привело к нулевым указателям. Мне как-то удалось получить данные в page2 с помощью window.opener () в JavaScript. Теперь я хочу, чтобы эти данные были доступны в методе processAction () FacesPortlet. Пробовал с помощью request.getParameter, request.getAttributes, все напрасно. После долгих исследований мне каким-то образом удалось отправить некоторые жестко закодированные данные в методе processAction (). Но я не могу отправить значение со страницы1. Вот как я отправляю жестко закодированное значение.

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

Далее следуют другие поля внутри формы. Я получаю значение в методе processAction () следующим образом

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

Это возвращает "someval". Теперь я пытаюсь присвоить значение со страницы 1, используя JavaScript, используя следующий код.

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 +" как есть, а не фактическое значение в переменной "val".

Пожалуйста, ведите меня в правильном направлении. С нетерпением жду ваших ответов. Спасибо.

1 Ответ

0 голосов
/ 20 сентября 2011

Наконец-то нашли решение. Проблема заключается в атрибуте 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());
    }
}
...