RESTLET - 链接验证器和过滤器,为什么它超过了过滤器?

时间:2014-03-11 07:08:46

标签: java servlets restlet restlet-2.0

我有一个restlet,我想在其中链接一个验证器并在代码中依次过滤。代码就是这样的

@Override
public synchronized Restlet createInboundRoot()
{
    Router router = new Router();
    Validator val = new ParameterValidator(getContext());

    Filter fil = new MYFilter(getContext());
    router.attach("/HelloWorld", HW.class);
    fil.setNext(val);
    val.setNext(router);
    val.validate("Name",true,"^[a-z0-9A-Z]+$");
    return val;
}

但是这不会检查过滤器,只是在验证器上工作然后出来。

但如果我写下面给出的相同代码,它可以正常工作,

@Override
public synchronized Restlet createInboundRoot()
{
    Router router = new Router();
    Validator val = new ParameterValidator(getContext());

    Filter fil = new MYFilter(getContext());
    router.attach("/HelloWorld", fil);
    fil.setNext(val);
    val.setNext(HW.class);
    val.validate("Name",true,"^[a-z0-9A-Z]+$");
    return router;
}

上面的代码工作正常,但现在我必须创建一个链,我将不得不创建Validator和Filter的新对象与每个新的映射。 任何解决方案将不胜感激

1 个答案:

答案 0 :(得分:0)

我在RESTLET邮件列表中找到了上述问题的答案。路由器超越过滤器的原因是它返回val

return val;

而不是,如果使用

return fil;

然后调用将通过过滤器链通过过滤器然后验证器..