Вернуть не-HTML, не-JSON http тела в Tapestry 5?

Я должен реализовать поставщика услуг протокола OAuth в проекте, который использует Tapestry5. Поэтому мне просто нужно вернуть очень простое тело ответа HTTP, которое не является ни HTML, ни JSON.

Сначала я попытался использовать стандартный подход tml & pojo (java class, page), но это не работает, потому что Tapestry пытается разобрать шаблоны.

Поэтому я думаю, что должен попробовать что-то другое. Может быть, можно использовать метод render() на странице? Но я не смог найти никакой документации, которая бы ответила на этот вопрос.

Или я должен просто использовать другой фреймворк, который бы лучше соответствовал моим потребностям?

Спасибо за совет,

Ричард

2 ответа

Решение

Брайан подтолкнул меня в правильном направлении, но реальное решение проблемы было еще проще:

StreamResponse onActivate() {
     return new TextStreamResponse("text/plain", "foo=bar");
}

Вы можете передавать текст прямо со страницы, не используя шаблон:

StreamResponse onActivate() {
  return new StreamResponse(
    public String getContentType() {
      return "text/plain";
    }

    public InputStream getStream() {
      return new ByteArrayInputStream("foo=bar".getBytes());
    }

    public void prepareResponse(Response response) {
      // response.setHeader(...
    }
}

Если бы вы делали это для большого количества страниц, я думаю, вы могли бы добавить свой собственный DocumentLinker, который позволит вам обойти все элементы xml/html/head, которые Tapestry добавляет на страницу по умолчанию. Тогда вы можете вернуться к использованию шаблонов.

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