【发布时间】:2015-12-08 19:56:36
【问题描述】:
我有一个 seam 2.2.2 应用程序,我正在尝试自定义 ckeditor fileUpload 插件。
我想出的解决办法是:
1) 为所有具有 'editor' 样式类的元素初始化编辑器:
var elements = CKEDITOR.document.find('.editor');
for(var i = 0; i< elements["$"].length; i++){
CKEDITOR.replace(elements["$"][i], {
filebrowserUploadUrl: rootPath + "/cops/filebrowserUploadUrl.seam"
});
}
2) 设置filebrowserUploadUrl.seam,除了执行什么都不做:
#{attachmentController.sendImageToServer()}
3) 使用 apache commons fileUpload 实现后端:
public void sendImageToServer()
{
HttpServletRequest request = ServletContexts.instance().getRequest();
DiskFileItemFactory factory = new DiskFileItemFactory();
File repository = (File) request.getAttribute("javax.servlet.context.tempdir");
factory.setRepository(repository);
ServletFileUpload upload = new ServletFileUpload(factory);
try
{
List<FileItem> items = upload.parseRequest(request);
processItems(items); //set the file data to specific att
saveOpenAttachment(); //save the file to disk
}
这个方法可以调用。我可以在请求中调试上传参数(带有一些二进制数据),但 upload.parseRequest(request) 返回一个空列表。我已经搜索了这个问题,我做了我能做的一切,但我无法判断应用程序自定义 FaceletViewHandler 是否导致了这个问题。 虽然如果我能找到这个问题的解决方案我会非常满意,但我觉得这不是一个好的解决方案。也许 Seam 与 facelets 的集成可以给我一个更好的解决方案。我真的不知道。 有什么建议吗?
【问题讨论】:
-
我通过在 bean 上执行 List
items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request) 并设置 在我的 components.xml 中。但仍有疑问:任何其他 url 模式都会崩溃。有谁知道为什么?
标签: java file-upload ckeditor seam apache-commons