将数据从一个JSF页面传输到FacesPortlet的ProcessAction()方法



这就是我想做的。我想从jsf page1的数据可在jsf page2这是由page1打开的弹出窗口。两者都有单独的托管bean。我尝试使用会话,但它导致空指针。我设法在javascript中使用window.opener()获得page2中的数据。现在,我希望这些数据在FacesPortlet的processAction()方法中可用。尝试使用请求。getParameter,请求。getAttributes,所有这些都是徒劳的。经过大量的研究,我设法在processAction()方法中发送一些硬编码数据。但是我无法从page1发送值。下面是我发送硬编码值的方法。

<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"。现在我尝试使用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();

这将返回值"+ value .value +",而不是"val"变量中的实际值。

请给我指路。热切期待您的回复。谢谢。

终于找到了解决方案。问题在于我的表单的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());
    }
}

相关内容

  • 没有找到相关文章

最新更新