`
wowlinda80
  • 浏览: 61274 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

DWR3rc1跟Struts2.1.x配合 上传问题

    博客分类:
  • JAVA
阅读更多
参考网上设置和dwr3的例子,做一个文件上传的小东西,但是发现有问题

dwr.xml 和web.xml的配置不再多说。

js:
<head>
  <script type='text/javascript' src='/sxnicoa/dwr/engine.js'> </script>
  <script type='text/javascript' src='/sxnicoa/dwr/util.js'> </script>
  <script type='text/javascript' src='/sxnicoa/dwr/interface/DwrUpload.js'></script>
<script type="text/javascript">

function uploadFiles() {
	  var file = dwr.util.getValue('uploadImage');
	  
	  DwrUpload.uploadImage(file,function(data) {
		    dwr.util.setValue('image', data);
	  });
}

</script>


html:
<table class="plain grey form">
      <tr>
        <th>Image:</th>
        <td><input type="file" id="uploadImage" size="30"/></td>
      </tr>
      <tr>
        <th>File:</th>
        <td><input type="file" id="uploadFile" size="30"/></td>
      </tr>
      <tr>
        <th>Color:</th>
        <td>#<input type="text" id="color" value="FFFFFF" size="7"/></td>
      </tr>
      <tr>
        <th></th>
      	<td>
          <button onclick="uploadFiles()">Upload</button>
      	</td>
      </tr>
  	</table>
  	
  	<img id="image" src="javascript:void(0);"/>


java:
public class DwrUpload {

	private static Logger logger = LoggerFactory.getLogger(DwrUpload.class);

	public void uploadFile(String uploadFile) {

		logger.debug("uploadFile==="+uploadFile);
	}
	
	public BufferedImage uploadImage(BufferedImage uploadImage)
    {
		
		logger.debug("uploadImage==="+uploadImage);
		
		AffineTransform atx = new AffineTransform();
        atx.scale(200d / uploadImage.getWidth(), 200d / uploadImage.getHeight());
        // AffineTransformOp.TYPE_BILINEAR is very slow
        AffineTransformOp afop = new AffineTransformOp(atx, AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
        uploadImage = afop.filter(uploadImage, null);
       

        return uploadImage;
    }

}


如果上传页面是html则上传没问题,即不使用struts2的过滤器,不经过struts2的拦截器,如果上传页面改为jsp,即在struts2的框架内,则提示错误"Failed to find parameter: scriptSessionId"。

问题已解决:需注意的地方是java方法中的参数必须是BufferedImage,InputStream,FileTransfer三种中其中一个,一般推荐使用FileTransfer,可以获取文件名、文件类型、和内置的inputStream。
再有web.xml配置的struts2 filter-mapping不能为/*
可以设置成:
<filter-mapping>
		<filter-name>struts</filter-name>
		<url-pattern>*.jspa</url-pattern>
	</filter-mapping>
	
	<filter-mapping>
		<filter-name>struts</filter-name>
		<url-pattern>*.do</url-pattern>
	</filter-mapping>
	
	<filter-mapping>
		<filter-name>struts</filter-name>
		<url-pattern>*.jsp</url-pattern>
	</filter-mapping>
分享到:
评论
1 楼 limingnihao 2011-06-08  
我用SpringMVC,filter-mapping设为*.do,java方法参数为BufferedImage,弄了一下午就是不好使;
IE还是报Failed to find parameter: scriptSessionId。
谷歌报engine.js内的Cannot set property 'batch' of null。
郁闷了。

相关推荐

Global site tag (gtag.js) - Google Analytics