Handle unresolved view name

This commit is contained in:
Rossen Stoyanchev
2016-05-27 15:18:11 -04:00
parent a72462cd8c
commit 33c5a19769
2 changed files with 8 additions and 3 deletions

View File

@@ -151,6 +151,7 @@ public class ViewResolutionResultHandler implements HandlerResultHandler, Ordere
return Flux.fromIterable(getViewResolvers())
.concatMap(resolver -> resolver.resolveViewName(viewName, locale))
.next()
.otherwiseIfEmpty(handleUnresolvedViewName(viewName))
.then(view -> {
Flux<DataBuffer> body = view.render(result, null, exchange);
return exchange.getResponse().setBody(body);
@@ -201,4 +202,9 @@ public class ViewResolutionResultHandler implements HandlerResultHandler, Ordere
return StringUtils.stripFilenameExtension(path);
}
private Mono<View> handleUnresolvedViewName(String viewName) {
return Mono.error(new IllegalStateException(
"Could not resolve view with name '" + viewName + "'."));
}
}

View File

@@ -154,9 +154,8 @@ public class ViewResolutionResultHandlerTests {
@Test
public void viewNameUnresolved() throws Exception {
TestSubscriber<Void> subscriber = handle("/path", "account", ResolvableType.forClass(String.class));
subscriber.assertNoValues();
handle("/path", "account", ResolvableType.forClass(String.class))
.assertErrorMessage("Could not resolve view with name 'account'.");
}
@Test