了解接缝过滤器 url-pattern 和可能的冲突
Understanding seam filter url-pattern and possible conflicts
我在 Seam 2.2.2 项目中制作了一个自定义编辑器插件,它以这种方式上传文件:
1) 配置编辑器以加载我特定的 xhtml 上传页面;
2) 在本页调用以下方法,return一个javascript回调;
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
为了让它工作,我必须把它放在里面 components.xml:
<web:multipart-filter create-temp-files="false"
max-request-size="1024000" url-pattern="*"/>
属性 create-temp-files 似乎与它的值无关。
但是 url-pattern 必须是“”或“/myUploadPage.seam”,任何其他值都会使项目列表 return 为空。有人知道为什么吗?
这变成了一个问题,因为当我使用适用于这种情况的 url 模式时,我的应用程序中每个带有 enctype="multipart/form-data" 的表单都停止提交数据。所以我最终导致系统的其他部分崩溃。
有人可以帮助我吗?
为了解决我的问题,我将解决方案更改为类似于 Seam 多部分过滤器处理请求:
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:multipart-filter 配置。
我在 Seam 2.2.2 项目中制作了一个自定义编辑器插件,它以这种方式上传文件:
1) 配置编辑器以加载我特定的 xhtml 上传页面;
2) 在本页调用以下方法,return一个javascript回调;
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
为了让它工作,我必须把它放在里面 components.xml:
<web:multipart-filter create-temp-files="false"
max-request-size="1024000" url-pattern="*"/>
属性 create-temp-files 似乎与它的值无关。 但是 url-pattern 必须是“”或“/myUploadPage.seam”,任何其他值都会使项目列表 return 为空。有人知道为什么吗?
这变成了一个问题,因为当我使用适用于这种情况的 url 模式时,我的应用程序中每个带有 enctype="multipart/form-data" 的表单都停止提交数据。所以我最终导致系统的其他部分崩溃。 有人可以帮助我吗?
为了解决我的问题,我将解决方案更改为类似于 Seam 多部分过滤器处理请求:
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:multipart-filter 配置。