Jooby Webserver Всегда выдает ошибку "406 Недопустимо: text/html"

Я настраиваю простой веб-сервер Jooby. У меня есть файл App.java и home.html. Пока единственное, что я хочу, это то, что если вы откроете домашнюю страницу, она покажет html-страницу с надписью "Hello World". Тем не менее, я всегда получаю сообщение об ошибке "org.jooby.Err: Not Acceptable(406): text/html".

Я создал проект с помощью Maven с архетипом, но я также пытался создать его с Gradle. Я запускаю программу с Java 8, в IntellIJ IDEA. Я уже пробовал использовать разные HTML-файлы, но я не думаю, что с этим что-то не так, потому что, если я возвращаю его как необработанную строку, это работает (я просто не хочу этого делать, потому что я не буду умеет нормально использовать JavaScript и файлы изображений). Я также попытался сделать это в отдельном классе, используя метод get(), и я попытался не возвращать Result, а вместо этого сделать response.send(result).

Вот мой код:

home.html:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
</head>
<body>
    Hello World!
</body>
</html>

App.java:

public class App extends Jooby {
    {
        get("/", req -> {
            //Line that throws the error:
            return Results.html("home").put("model", new Object());
        });
    }

    public static void main(final String[] args) {
        run(App::new, args);
    }
}

Я, очевидно, ожидал бы, что он просто покажет мне текст "Hello World", но вместо этого он покажет мне экран со следующей трассировкой стека:

org.jooby.Err: Not Acceptable(406): text/html

at org.jooby.internal.AbstractRendererContext.render(AbstractRendererContext.java:280)

at org.jooby.internal.ResponseImpl.send(ResponseImpl.java:562)

at org.jooby.Response.send(Response.java:624)

at org.jooby.Route$OneArgHandler.handle(Route.java:2000)

at org.jooby.internal.RouteImpl.handle(RouteImpl.java:282)

at org.jooby.internal.RouteChain.next(RouteChain.java:262)

at org.jooby.Route$Chain.next(Route.java:2345)

at org.jooby.internal.HttpHandlerImpl.handle(HttpHandlerImpl.java:497)

at org.jooby.internal.netty.NettyHandler.channelRead0(NettyHandler.java:271)

at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)

at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)

at io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:38)

at io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:353)

at io.netty.util.concurrent.DefaultEventExecutor.run(DefaultEventExecutor.java:66)

at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)

at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138)

at java.lang.Thread.run(Thread.java:748)

1 ответ

Решение

Results.html требует шаблонного движка. Если вам нужно только показать статическую страницу, попробуйте это:

{
  assets("/", "index.html");
}

index.html Файл должен быть в корне пути к классам.

Другие вопросы по тегам