【发布时间】:2017-08-20 16:11:55
【问题描述】:
我有一个 @Provider 应该像这样替换一个路径变量:
@Provider
@Priority(value = 1)
public class SecurityCheckRequestFilter implements ContainerRequestFilter
{
@Override
public void filter(ContainerRequestContext requestContext) throws IOException
{
//CODE
requestContext.getUriInfo().getPathParameters().putSingle("userId", someNewUserId);
}
}
当我调试它时,路径变量“userId”似乎被替换了,但在工作流后期的端点(例如/user/{userId}),旧值再次出现。什么都没有被替换。在最新的 RestEasy 文档中没有关于此行为的信息,但在 very old Resteasy doc 中,有一个信息,getPathParameters() 返回一个不可修改的列表。如果它是不可修改的,为什么我可以替换提供者中的值呢?
然而,该值不会被替换。如何用新值覆盖现有路径参数?
(当然,我可以将新的 userId 添加为一些标头参数并稍后在端点中获取信息,但这不是一个好的解决方案)
【问题讨论】:
-
javax.ws.rs.core.UriInfo.getPathParameters() 的 current JavaDoc FWIW 说了同样的话
标签: jakarta-ee jax-ws resteasy