NutzCN Logo
问答 如何在ActionFilter中取到nutmap
发布于 3128天前 作者 xwqiang 1806 次浏览 复制 上一个帖子 下一个帖子
标签:

如表题
由于multipart/form-data表单提交的数据在request取不到数据,需要从nutmap中获取。

5 回复

拿不到, 你需要在AdaptorProcessor之后插入一个动作链处理器.

参考: http://nutzbook.wendal.net/dev_prepare/action_chain.html

我能想的是在AdaptorProcessor后增加一个Process,用于将request做upgrade处理,使request.getParamter方法能解析到multipart数据。但是感觉这样挺不优雅的。
大致逻辑是:
if (isFormField()) {
//普通表单不做处理
} else {
//读取inputstream并解析(可以参照apache的FileUpload的实现)。
}

@wendal
刚发现我解析了request流之后,fastuploading再读就读不出来了。

拿不到, 你需要在AdaptorProcessor之后插入一个动作链处理器.
参考: http://nutzbook.wendal.net/dev_prepare/action_chain.html

你说的方法具体如何处理,处理后如何在ActionFilter中拿到,能给个demo吗?

@xwqiang 恩, 流只能读取一次, 比较蛋疼

这样改一下:

  1. 首先, 用FastUploading读取之后, 把整个返回值放在req中, 例如 req.setAttr("_nutz_upload", xxxObj); 中
  2. 然后, 做一个UploadAdaptor子类,覆盖getReferObject方法, 在里面判断req中是否有_nutz_upload,如果有就返回该值,没有就交回给超类处理
  3. 最后, 引用UploadAdaptor的地方,全改成自定义的UploadAdaptor子类

要在ActionFilter里面取的话, 按我上一条回复的思路改, 将第一次读取的结果保存下来.

如果要通用, 按第一次回复的方式, 加动作链处理器, 在适配器处理器之后插入自定义的处理器

添加回复
请先登陆
回到顶部