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

参考网上设置和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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误提示表示在解析 XML 文件时遇到了一个引用的 DTD(Document Type Definition)文件(http://getahead.org/dwr/dwr20.dtd)存在问题。 DTD 是一种用于定义 XML 文档结构的文件,它包含了元素、属性、实体等的定义。在解析 XML 文件时,解析器会根据 DTD 文件来验证 XML 的结构和语法是否正确。 这个错误可能是由于以下几个原因导致的: 1. 网络连接问题:无法访问 DTD 文件的 URL,可能是网络连接不可用或者 DTD 文件不存在。 2. DTD 文件错误:DTD 文件本身存在语法错误或者不符合规范。 3. 配置问题:可能是配置文件中指定的 DTD 文件的 URL 不正确或者配置文件本身存在语法错误。 要解决这个问题,你可以尝试以下几种方法: 1. 检查网络连接:确保你的网络连接正常,能够访问互联网。 2. 验证 DTD 文件:尝试在浏览器中打开 http://getahead.org/dwr/dwr20.dtd,查看是否能够正确加载和显示 DTD 文件内容,如果无法打开或者显示异常,则可能是 DTD 文件本身存在问题。 3. 更新 DTD 文件地址:如果 DTD 文件无法访问或者不存在,可以尝试找到最新的 DTD 文件地址,并更新到配置文件中。 4. 检查配置文件:检查配置文件中关于 DTD 文件的配置是否正确,确保语法正确并且 URL 地址有效。 如果以上方法都无法解决问题,你可以尝试在 "Problems View" 中查看更详细的错误信息,看是否有其他提示或者错误堆栈信息可以提供更多线索来解决问题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值