我正在使用Spring来设置一个Restlet应用程序,我有一个点需要URL递归。即,
/something/filter/x/y/filter/a/b/foo
模式大约是:
/something(/filter/{p}/{q})*/foo
因此,URL中可以有无限数量的过滤器片段。
在Spring XML中,它看起来像这样:
<bean id="router" class="org.restlet.ext.spring.SpringRouter">
<constructor-arg ref="parentRouter" />
<property name="attachments">
<map>
<entry key="/filter/{filterAttribute}/{filterValue}" value-ref="filterExtractor" />
<entry key="">
<bean class="org.restlet.ext.spring.SpringFinder">
<lookup-method name="create" bean="dataResource" />
</bean>
</entry>
</map>
</property>
</bean>
<bean id="extractor" class="ca.uhnresearch.pughlab.tracker.extractor.FilterExtractor">
<property name="next" ref="router"/>
</bean>
所以这开始了,但是当应用程序启动时,org.restlet.util.WrapperList.iterator
中的堆栈溢出,所以看起来递归路由器/提取器初始化正在打破Restlet初始化过程。
因此有两个问题:
答案 0 :(得分:0)
Restlet不支持这种方法。我认为实现类似事情的唯一方法是具有匹配模式startsWith
的子路由器。
我不确切知道您的用例是什么,但利用HTTP标头将过滤器属性/值放入请求中会更好。我不确定这种方法是否真的是RESTful ;-)但我有兴趣了解更多细节......
希望它可以帮到你, 亨利