【发布时间】:2011-08-28 17:48:56
【问题描述】:
我有一个支持 Bean,我在其中读取未绑定到组件的参数。 Seam 提供了读取获取参数的功能。我用过
@RequestParameter private String param1;
这样他就不会在验证错误时跳过我的操作方法,就像我使用的时候一样 ,因为我不想呈现 HTML 响应,而是重用业务逻辑。相反,我抓取响应流并自己编写呈现的响应
FacesContext ctx = FacesContext.getCurrentInstance();
final HttpServletResponse resp = (HttpServletResponse)ctx.getExternalContext().getResponse();
resp.getOutputStream().write(xml.getBytes());
resp.getOutputStream().flush();
resp.getOutputStream().close();
ctx.responseComplete(); // render response phase done
我尝试从 HttpServletRequest inputStream 中读取文件,但该文件已经为空。有没有办法仍然从 JSF 获取“文件”。我可以使用一个单独的 servlet 并在那里处理它,但这会破坏我构建其余接口的方式。
感谢任何建议。
编辑:只是为了完整输入流的代码
final HttpServletRequest request = (HttpServletRequest)ctx.getExternalContext().getRequest();
ServletInputStream stream = request.getInputStream();
int byt = stream.read(); // byt was -1
编辑编辑:对不起,很长的帖子。现在我做了一个单独的servlet。即使 Firefug 说我传输了文件,我也得到一个空的输入流。怎么可能是空的?
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
boolean isMultipart = ServletFileUpload.isMultipartContent(req);
ServletInputStream stream= req.getInputStream();
int test = stream.read(); // test == -1
该 servlet 代码在单独的项目中运行良好,因此过滤器链中的一个 JSF/Seam servlet 必须删除数据。如果有人提示哪一个或如何检查。
【问题讨论】:
标签: jsf file-upload seam