Xmlhttprequest 了解seam筛选器url模式和可能的冲突
我在Seam 2.2.2项目中制作了一个自定义编辑器插件,它可以通过以下方式上传文件: 1) 配置编辑器以加载我的特定xhtml上载页面 2) 在此页面内调用以下方法,并返回javascript回调Xmlhttprequest 了解seam筛选器url模式和可能的冲突,xmlhttprequest,servlet-filters,seam,multipartform-data,Xmlhttprequest,Servlet Filters,Seam,Multipartform Data,我在Seam 2.2.2项目中制作了一个自定义编辑器插件,它可以通过以下方式上传文件: 1) 配置编辑器以加载我的特定xhtml上载页面 2) 在此页面内调用以下方法,并返回javascript回调 public String sendImageToServer() { HttpServletRequest request = ServletContexts.instance().getRequest(); try {
public String sendImageToServer()
{
HttpServletRequest request = ServletContexts.instance().getRequest();
try
{
List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
processItems(items);//set the file data to specific att
saveOpenAttachment();//save the file to disk
}
//build callback
公共字符串sendImageToServer()
{
HttpServletRequest=ServletContexts.instance().getRequest();
尝试
{
列表项=新建ServletFileUpload(新建DiskFileItemFactory()).parseRequest(请求);
processItems(items);//将文件数据设置为特定att
saveOpenAttachment();//将文件保存到磁盘
}
//生成回调
要使其正常工作,我必须将其放入components.xml中:
<web:multipart-filter create-temp-files="false"
max-request-size="1024000" url-pattern="*"/>
“创建临时文件”属性的值似乎并不重要。
但是url模式必须是“”或“/myUploadPage.seam”,任何其他值都会使项目列表返回空。有人知道为什么吗
这就变成了一个问题,因为当我使用适用于这种情况的url模式时,应用程序中每个带有enctype=“multipart/form data”的表单都会停止提交数据。因此,我最终导致系统的其他部分崩溃。
有人能帮我吗?为了解决我的问题,我将解决方案更改为类似Seam multipart filter handle请求:
ServletRequest request = (ServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
try
{
if (!(request instanceof MultipartRequest))
{
request = unwrapMultipartRequest(request);
}
if (request instanceof MultipartRequest)
{
MultipartRequest multipartRequest = (MultipartRequest) request;
String clientId = "upload";
setFileData(multipartRequest.getFileBytes(clientId));
setFileContentType(multipartRequest.getFileContentType(clientId));
setFileName(multipartRequest.getFileName(clientId));
saveOpenAttachment();
}
}
现在我像Seam一样处理请求,不需要破坏其他类型请求的web:multipartfilter配置