@Test public void modelAttribute() throws Exception { Foo foo = new Foo(); Rendering rendering = Rendering.view("foo").modelAttribute(foo).build(); assertEquals(Collections.singletonMap("foo", foo), rendering.modelAttributes()); }
@Bean RouterFunction<ServerResponse> routes() { return route(GET("/api/v1/messages"), request -> ok().contentType(request.headers() .accept() .contains(TEXT_EVENT_STREAM) ? TEXT_EVENT_STREAM : APPLICATION_STREAM_JSON) .body(Flux.zip( Flux.interval(Duration.ofSeconds(1)), messages.findAll()) .map(Tuple2::getT2) .share(), Message.class)) .andRoute(POST("/api/v1/messages"), request -> ok().contentType(APPLICATION_JSON) .body(request.bodyToMono(Message.class) .flatMap(messages::save), Message.class)) .andRoute(GET("/"), request -> ok().render("index", Rendering.view("index") .modelAttribute("name", "Max") .build() .modelAttributes()) ); }
@GetMapping Rendering index() { return Rendering.view("index") .modelAttribute("message", Message.of("hello, la-la!")) .modelAttribute("messages", new ReactiveDataDriverContextVariable( Flux.zip( Flux.interval(Duration.ofSeconds(1)), Flux.just( Message.of("and one"), Message.of("and two"), Message.of("and three"), Message.of("and four!")) ).map(Tuple2::getT2), 1 )) .build(); } }
@GetMapping("/zones/{zoneId}") public Mono<Rendering> displayZone(@PathVariable String zoneId) { PageRequest pageRequest = PageRequest.of(0, this.historySize, Sort.by("timestamp").descending()); Flux<PowerGridSample> latestSamples = this.powerGridSampleRepository .findAllByZoneId(zoneId, pageRequest); return this.zoneDescriptorRepository.findById(zoneId) .switchIfEmpty(Mono.error(new MissingDataException(zoneId))) .map(zoneDescriptor -> Rendering .view("zone") .modelAttribute("zone", zoneDescriptor) .modelAttribute("samples", latestSamples) .build()); }
@PostMapping({ "/", "/404" }) public Rendering post(@RequestParam(required = false, name = "name") final Optional<String> name) { final String result = name.orElse("World"); return Rendering.view("index") .modelAttribute("name", result) .build(); } }
@GetMapping(path = "/zones/events", produces = MediaType.TEXT_EVENT_STREAM_VALUE) public Rendering streamZoneEvents() { Flux<ElectricityMeasure> events = this.measuresCollector .getElectricityMeasures() .filter(measure -> measure.getPower() == 0); ReactiveDataDriverContextVariable eventsDataDriver = new ReactiveDataDriverContextVariable(events, 1); return Rendering.view("zone :: #events") .modelAttribute("eventStream", eventsDataDriver) .build(); }
@GetMapping("/") public Rendering home() { return Rendering .view("index") .modelAttribute("zones", this.zoneDescriptorRepository.findAll()) .build(); }
@GetMapping({ "/", "/404" }) public Rendering index(@RequestParam(required = false, name = "name") final Optional<String> name) { final String result = name.orElse("World"); return Rendering.view("index") .modelAttribute("name", result) .build(); }
returnValue = Rendering.view("account").modelAttribute("a", "a1").status(status).header("h", "h1").build(); String expected = "account: {a=a1, id=123}"; ServerWebExchange exchange = testHandle("/path", returnType, returnValue, expected, resolver);
@Test public void viewName() { Rendering rendering = Rendering.view("foo").build(); assertEquals("foo", rendering.view()); }
@Test public void defaultValues() { Rendering rendering = Rendering.view("abc").build(); assertEquals("abc", rendering.view()); assertEquals(Collections.emptyMap(), rendering.modelAttributes()); assertNull(rendering.status()); assertEquals(0, rendering.headers().size()); }
@Test public void modelAttributes() throws Exception { Foo foo = new Foo(); Bar bar = new Bar(); Rendering rendering = Rendering.view("foo").modelAttributes(foo, bar).build(); Map<String, Object> map = new LinkedHashMap<>(2); map.put("foo", foo); map.put("bar", bar); assertEquals(map, rendering.modelAttributes()); }