NutzCN Logo
问答 关于:NOT Action match的问题
发布于 3070天前 作者 xliaoong 3023 次浏览 复制 上一个帖子 下一个帖子
标签: mvc
web.xml配置:
<filter>
    <filter-name>nutz</filter-name>
    <filter-class>org.nutz.mvc.NutFilter</filter-class>
    <init-param>
       <param-name>modules</param-name>
       <param-value>com.clcg.luna.receive.ImageReceiver</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>nutz</filter-name>
    <url-pattern>/uploadimage</url-pattern>
</filter-mapping>

部分java代码: 
public class ImageReceiver {
private static Logger logger = Logger.getLogger(ImageReceiver.class);

@AdaptBy(type=UploadAdaptor.class, args={"${app.root}/WEB-INF/tmp/", "8192", "utf-8", "100", "10240000"})
@POST
@Ok("json")
@At("/uploadimage")
public JsonMsg uploadAvatar(@Param("file") TempFile tf, @Param("uid") String uid, AdaptorErrorContext err) {
    if (err != null && err.getAdaptorErr() != null) {
           return JsonMsg.createMsg(JsonMsg.CODE_ERROR, "FILE_SIZE_OVER");
    }
    .......

    log:
    2015-11-02 12:04:13 org.nutz.mvc.impl.UrlMappingImpl:  Search mapping for path=/uploadimage : NOT Action match

    请帮忙分析哪里没映射正确
7 回复

请版主帮忙,已经调试一上午了,无法定位问题。其他方法访问正常

虽然有点奇怪的配置(只匹配一个/uploadimage)

如果MainModule也没有配置@At的话, 99.99%是因为前段页面使用了GET, 而非POST

问题已经解决,本案例:文件接收接口,那么在浏览器直接访问这个URL,没有提交文件参数,那么在执行 uploadAvatar方法时,部分参数为null,无法去匹配方法所以抛出了Not action match的错误信息。反馈给浏览器就是404。

事实上这种提示个人以及同僚感觉非常不友好,首先无法从404里确定到底是配置问题,还是地址拼写问题,特别是在刚开始使用的时候。not action match 更容易理解为该地址没有对应的注解。
像本案例的情况我个人认为不应该出404,可以出500或是其他东西来给出一个信号:该地址没问题,只是参数异常了。

@wendal 因为我这边只利用了nutz的文件接收结构,其他接口的实现我用了我们自己更简单的一种方式,所以这里做了强制只拦截这一个uri。不过问题已经解决,实际上还是感觉挺奇葩的,或许还是理念上一时无法跟上nutz吧

"该地址没问题,只是参数异常了" GET/POST还真不叫"参数", 倒是可以考虑提示, "有这个路径映射,但不是XXX,而是XXX"

@wendal 希望我们nutz越办越好!!

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