我正在构建一个新的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