在Jersey JAX -RS中@InitBinder是否有等​​效项?

时间:2019-05-27 18:46:04

标签: java rest jersey-2.0

我正在构建一个新的Rest API资源,我有一个@queryParam,它可以是“ CSV”或“ XLS”。我使用枚举类进行了此操作,然后实现了此“ @DefaultValue(” xls“)@QueryParam(FORMAT_FILTER)FormatExport format” 谷歌搜索,我意识到实现@InitBinder是必要的,尽管InitBinder是Spring的一部分,而不是Jersey的一部分。 是否有一个等效的。

//1. Enum class.
    public enum FormatExport
    {
        json("xls"),
        scv("csv");

      private String label;

      private FormatExport(String value)
      {
        this.label = value;
      }

      public static FormatExport fromValue(String value)
      {
        for(FormatExport format : values())
        {
           if(format.label.compareToIgnoreCase(value) == 0)
           {
               return format;
           }
        }
        throw new IllegalArgumentException("Unknown value type: " + value );
    }
    }

//2. resource

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("/elements")
    public Response findElements(
        @DefaultValue("json") @QueryParam(FORMAT_FILTER) FormatExport format)
    {
        switch (format)
        {
            case json:
                /* Code */
            case scv:
                /* Code */
            default:
                break;
        }
}

//I found this

    public class QuestionCategoryConverter extends PropertyEditorSupport{

     public void setAsText(final String text) throws IllegalArgumentException 
    {
            setValue(QuestionCategory.fromValue(text));
        }

    }


    @InitBinder
    public void initBinder(final WebDataBinder webdataBinder) {
        webdataBinder.registerCustomEditor(QuestionCategory.class, new 
        QuestionCategoryConverter());
}


//This used a spring annotation

0 个答案:

没有答案