2015-12-15 11 views
5

में कस्टम रेस्ट कंट्रोलर विधि का पर्दाफाश कैसे करें मैंने कस्टम रीस्ट कंट्रोलर बनाया है और मैं एपीआई तक पहुंच सकता हूं और संसाधन से परिणाम प्राप्त कर सकता हूं, समस्या यह है कि यह दिखाई नहीं दे रही है एचएएल ब्राउज़र .. एचएएल ब्राउज़र में इस कस्टम विधि का खुलासा कैसे करें? धन्यवाद ...स्प्रिंग डेटा रेस्ट: एचएएल ब्राउज़र

@RepositoryRestController 
public class RevisionController { 

    protected static final Logger LOG = LoggerFactory 
      .getLogger(RevisionController.class); 

    private final DisciplineRepository repository; 

    Function<Revision<Integer, Discipline>, Discipline> functionDiscipline = new Function<Revision<Integer, Discipline>, Discipline>() { 
     @Override 
     public Discipline apply(Revision<Integer, Discipline> input) { 
      return (Discipline) input.getEntity(); 
     } 
    }; 

    @Inject 
    public RevisionController(DisciplineRepository repository) { 
     this.repository = repository; 
    } 

    @RequestMapping(method = RequestMethod.GET, value = "/disciplines/search/{id}/revisions") 
    public @ResponseBody ResponseEntity<?> getRevisions(
      @PathVariable("id") Integer id) { 

     Revisions<Integer, Discipline> revisions = repository.findRevisions(id); 

     List<Discipline> disciplines = Lists.transform(revisions.getContent(), 
       functionDiscipline); 

     Resources<Discipline> resources = new Resources<Discipline>(disciplines); 

     resources.add(linkTo(
       methodOn(RevisionController.class).getRevisions(id)) 
       .withSelfRel()); 

     return ResponseEntity.ok(resources); 
    } 


} 

उत्तर

4

एक सेम है कि एक ResourceProcessor<RepositoryLinksResource> लागू करता रजिस्टर और आप रूट संसाधन के लिए अपने कस्टम नियंत्रक के लिंक जोड़ सकते हैं, और एचएएल ब्राउज़र इसे देखेंगे।

public class RootResourceProcessor implements ResourceProcessor<RepositoryLinksResource> { 

@Override 
public RepositoryLinksResource process(RepositoryLinksResource resource) { 
    resource.add(ControllerLinkBuilder.linkTo(ControllerLinkBuilder.methodOn(RevisionController.class).getRevisions(null).withRel("revisions"))); 
    return resource; 
    } 
} 
+1

मुझे लगता है कि कोशिश कर रहा हूँ, और यह 'java.lang.IllegalArgumentException साथ मेरे लिए असफल रहने के है: 'uriTemplate' null' नहीं होना चाहिए। (GetRevisions() '।) –

+0

धन्यवाद एरिक के बाद आपका कोड एक करीबी-माता-पिता को याद कर रहा था, मैंने कोड में संशोधन किया है। आपकी समस्या के लिए - क्या आप एक और पूर्ण स्टैक ट्रेस पोस्ट कर सकते हैं? यह संभव है कि आप अपने कस्टम कंट्रोलर क्लास को स्टैंडअलोन क्लास के बजाए रिसोर्सप्रोसेसर इंटरफेस को कार्यान्वित करके इसे ठीक करने में सक्षम होंगे - इस जगह के बारे में rumblings के जोड़े (https://stackoverflow.com/questions/38548834/spring-hateoas- अपवाद-इन-बनाने-एक-new-लिंक)। –

+0

खैर, अब मैं हो रही है 'java.util.NoSuchElementException: ArrayList: 854 संग्रह: 1042 ControllerLinkBuilderFactory: 139 [वसंत-hateoas] ControllerLinkBuilder: 172 RootResourceProcessor: 22)' है जो 'resource.add (linkTo (methodOn (MeetupController.class, 2L, 3L, 2d, 2d, null, null)। फाइनलाइज (2 एल, 3 एल, 2 डी, 2 डी, नल, नल))। रेल ("meetups")); '(स्टैक को छोटा कर दिया गया है टिप्पणी में फिट) –

संबंधित मुद्दे