में शून्य मानों पर नहीं कहा जाता है। मैंने जेएक्स-आरएस (जर्सी) को हेडरपेराम में एक enum को तत्काल करने के लिए पैराम कनवर्टरप्रोवाइडर और पैराम कनवर्टर लिखा है। कनवर्टर की तरह दिखता है इसपैराम कनवर्टर की स्ट्रिंग विधि को जेएक्स-आरएस
@Provider
public class MyEnumParamConverterProvider implements ParamConverterProvider {
public <T> ParamConverter<T> getConverter(Class<T> rawType, Type genericType, Annotation[] annotations) {
if (rawType.equals(MyEnum.class)) {
return (ParamConverter<T>) new MyEnumParamConverter();
}
return null;
}
private static class MyEnumParamConverter implements ParamConverter<MyEnum> {
@Override
public MyEnum fromString(String enum) {
return MyEnum.of(enum);
}
@Override
public String toString(MyEnum enum) {
return enum.toString();
}
}
}
लेकिन जब हैडर नहीं क्योंकि जर्सी कोड पर वर्ग SingleValueExtractor में विधि में भेजा जाता है fromString विधि नहीं बुलाया जाता है org.glassfish.jersey.server.internal.inject.SingleValueExtractor.extract(MultivaluedMap<String, String>)
वहाँ जो जांच करता है कि पैरामीटर मान रिक्त है लाइन 82 पर एक कोड है या नहीं और यदि यह है! = शून्य तो से स्ट्रिंग विधि कहा जाता है।
public T extract(MultivaluedMap<String, String> parameters) {
String v = parameters.getFirst(getName());
if (v != null) {
try {
return fromString(v);
} catch (WebApplicationException ex) {
throw ex;
} catch (ProcessingException ex) {
throw ex;
} catch (Exception ex) {
throw new ExtractorException(ex);
}
} else {
return defaultValue();
}
}
मैं वास्तव में क्या चाहते हैं इस हिस्से को दरकिनार और मेरे fromString भी कुछ विशेष अपवाद वहाँ से निपटने की वजह से शून्य मान पर बुलाया करते है।
क्या इसका कोई तरीका है। मैं @NotNull जैसे बीन सत्यापन का उपयोग नहीं करना चाहता हूं ताकि मैं सब कुछ एक ही स्थान पर संभाल सकूं।
समाधान के लिए धन्यवाद। समस्या का हल किया। न्यू जर्सी कार्यान्वयन अधिक समझ में आता है। – LAC