我有一个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的新对象与每个新的映射。 任何解决方案将不胜感激
答案 0 :(得分:0)
我在RESTLET邮件列表中找到了上述问题的答案。路由器超越过滤器的原因是它返回val
return val;
而不是,如果使用
return fil;
然后调用将通过过滤器链通过过滤器然后验证器..