gpt4 book ai didi

java - Jersey 获取模板路径

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:12:06 30 4
gpt4 key购买 nike

我正在使用 Jersey 2,我想获取 URI 模板。原因是我创建了一个基于 URI 进行验证的身份验证系统。我设法工作了:

    @Override
public void filter(ContainerRequestContext containerRequest) throws IOException {

String method = containerRequest.getMethod();
String uri = containerRequest.getUriInfo().getPath();
}

问题是 getPath 返回如下内容:

/companies/1

我希望它返回

/companies/{id}

我是这样声明的:

@Path("{id}")

谢谢

编辑 我以为我在这里找到了它:

@Context
private ExtendedUriInfo uriInfo;

//...
Resource matchedModelResource = uriInfo.getMatchedModelResource();
System.out.println(matchedModelResource.getPathPattern().getTemplate().getTemplate());

但是你猜怎么着? matchedModelResource 为空。

另外,这个:

List<UriTemplate> matchedTemplates = uriInfo.getMatchedTemplates();

返回一个空的 UriTemplate 列表。 :(为什么没有设置数据?

最佳答案

好的。所以答案是使用:

 uriInfo.getMatchedTemplates();

uriInfo 实际上是 ExtendedUriInfo

这是我为获得正确语法而编写的代码:

    List<UriTemplate> matchedTemplates = uriInfo.getMatchedTemplates();

StringBuilder builder = new StringBuilder();

for (int i = matchedTemplates.size() - 1; i >= 0; i--) {
builder.append(matchedTemplates.get(i).getTemplate().substring(1));
}

System.out.println("Permission is: " + builder.toString());
// Prints:
// Permission is: sig/companies/{id}

之前数据为 null 或空的原因是因为我的过滤器类中有一个 @PreMatching 注释。请不要问为什么。

希望这对某人有帮助。

关于java - Jersey 获取模板路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26410673/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com