Portal页面刷新数据丢失及response输出流问题,请指教!

l_walker 2004-03-27 08:58:35
我们在开发portal时出现上述问题(采用的是Portal struts framework)
第一个问题表现在当处理数据放在request中,而一个页面上有多个portlet时,
刷新页面或对某个portlet操作后会导致其他portlet数据丢失,
不知道哪位朋友碰到过、解决过?
现在的办法只有放在session中,但这在开发时没问题,就怕一上线
访问量一大后拖跨服务器:(

第二个问题是有同事向客户端导出文件流时无法使用response.getOutputStream()
查手册知response被限制使用了,我们希望的效果是点击某连接或按钮后出现
文件下载哪个窗口,让用户将文件保存到本地,在纯粹的web环境下OK,但portal中
就没辙了:(

对了,struts的<html:errors/>标记也发现不起作用,不知道是我配错了,
还是也有什么限制?

请知道的朋友指点一二,谢谢:)
...全文
189 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fuzhe 2004-04-02
  • 打赏
  • 举报
回复
如果楼主解决了这个下载文件的问题,不妨拿出来分享一下,大家共同进步吧
fuzhe 2004-04-02
  • 打赏
  • 举报
回复
我这里有一个文件上传的类,是从exo platform中拷出来的,作者用servelet包中的HttpServeletRequestWrapper包装了portletRequest,进而实现了文件上传的功能,当然里面上传的是jar文件,不过只要用FileInputStream代替其中的JarInputStream,就不难实现其他文件上传的功能,或许我们可以从中找到一些如何下载文件的启示:
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import java.util.jar.JarInputStream;

import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletException;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileUploadException;
import org.jbpm.workflow.definition.JpdlException;

import exo.portal.portlet.actions.ActionHandler;
import exo.portal.utils.Log;
import exo.services.workflow.jbpm.DefinitionService;

public class UploadAction extends ActionHandler {

private DefinitionService wfDefnService;

public UploadAction(DefinitionService service) {
wfDefnService = service;
}

public void init() throws Exception {
}

public void execute(RenderRequest request, RenderResponse response)
throws PortletException, IOException {
super.execute(request, response);
}

public void execute(ActionRequest request, ActionResponse response)
throws Exception {
portletContext_.log("UploadAction::execute(ActionRequest, ActionResponse) enter");

try {
HttpServletRequestWrapper srw = (HttpServletRequestWrapper) request;

if (FileUpload.isMultipartContent((HttpServletRequest) srw.getRequest())) {
DiskFileUpload upload = new DiskFileUpload();
List items = upload.parseRequest((HttpServletRequest) srw.getRequest());
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
Log.getLog().debug("UploadAction::execute deployProcessArchive: FileItem: " + item);
if (!item.isFormField()) {
JarInputStream definition =
new JarInputStream(item.getInputStream());
wfDefnService.deployProcessArchive(definition);
}
}
}
} catch (JpdlException e) {
portletContext_.log("UploadAction::execute deployProcessArchive: JpdlException thrown");

String errorMsg = "<ul>";
Iterator iter = e.getErrorMsgs().iterator();
while (iter.hasNext()) {
String msg = (String) iter.next();
portletContext_.log(msg);
errorMsg += "<li>" + msg + "</li>";
}
errorMsg += "</ul>";
request.setAttribute("upload.process.definition.failed", errorMsg);
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}

portletContext_.log("UploadAction::execute(ActionRequest, ActionResponse) exit");
}
}

2,633

社区成员

发帖
与我相关
我的任务
社区描述
WebSphere 是 IBM 的软件平台。它包含了编写、运行和监视全天候的工业强度的随需应变 Web 应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施,如服务器、服务和工具。
社区管理员
  • WebSphere社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧