相关疑难解决方法(0)

我可以使用Java反射获取方法参数名吗?

如果我有这样的课程:

public class Whatever
{
  public void aMethod(int aParam);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法知道,aMethod使用一个名为参数aParam,即类型的int

java reflection

116
推荐指数
6
解决办法
11万
查看次数

阅读jersey的ParamConverter中的另一个参数

当给定一个格式化为Instant的原生ISO-8601的字符串时,或者作为自纪元以来的整数毫秒,我ParamConverter提供了一个Instant(Date).这工作正常,但我还需要能够支持其他日期格式(客户很挑剔).

为了避免经典dd/mm/yyyymm/dd/yyyy歧义,我希望客户指定他们的首选格式作为请求*的一部分.例如:

GET http://api.example.com/filter?since=01/02/2000&dateformat=dd/mm/yyyy
Run Code Online (Sandbox Code Playgroud)

传递给一个看起来像这样的方法:

@GET
String getFilteredList( final @QueryParam( "since" ) Instant since ) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

(为清楚起见省略了时间和时区部分)

所以我希望我ParamConverter<Instant>能够读取dateformat参数.

我已经能够使用设置ContainerRequestContext属性的过滤器和AbstractValueFactoryProvider类似的东西的组合,但是需要参数来应用自定义注释,并且不允许它与QueryParam/FormParam /等一起使用.它没那么有用了.

有没有办法从ParamConverter中获取其他参数或请求对象本身?

[*]在现实世界中,这将来自一系列预先批准的格式,但现在只是假设他们正在提供输入 DateTimeFormatter


为清楚起见,这是我的代码:

public class InstantParameterProvider implements ParamConverterProvider {
    private static final ParamConverter<Instant> INSTANT_CONVERTER =
            new ParamConverter<Instant>( ) {
                @Override public final T fromString( final String value ) {
                    // This is where I would like to get the other parameter's …
Run Code Online (Sandbox Code Playgroud)

java jax-rs jersey jersey-2.0

6
推荐指数
1
解决办法
3459
查看次数

没有为@QueryParam调用Jackson JsonDeserialize

我已经映射了一个自定义解串器,以将dd / MM / yyyy模式下的字符串转换为LocalDate,以便可以使用更具可读性的签名来调用我的服务。

这是我的dto类,用作Jersey @BeanParam在层之间传输数据:

public class ProdutoFilterDto implements FilterDto {

private static final long serialVersionUID = -4998167328470565406L;

@QueryParam("dataInicial")
@JsonDeserialize(using = CustomLocalDateDeserializer.class)
private LocalDate dataInicial;

@QueryParam("dataInicial")
@JsonDeserialize(using = CustomLocalDateDeserializer.class)
private LocalDate dataFinal;

public LocalDate getDataInicial() {
    return dataInicial;
}

public void setDataInicial(LocalDate dataInicial) {
    this.dataInicial = dataInicial;
}

public LocalDate getDataFinal() {
    return dataFinal;
}

public void setDataFinal(LocalDate dataFinal) {
    this.dataFinal = dataFinal;
}

}
Run Code Online (Sandbox Code Playgroud)

这是我的自定义反序列化器:

public class CustomLocalDateDeserializer extends JsonDeserializer<LocalDate> {

@Override
public LocalDate deserialize(JsonParser p, DeserializationContext …
Run Code Online (Sandbox Code Playgroud)

java json jax-rs jackson jersey-2.0

3
推荐指数
1
解决办法
3277
查看次数

标签 统计

java ×3

jax-rs ×2

jersey-2.0 ×2

jackson ×1

jersey ×1

json ×1

reflection ×1