Вернуть не-HTML, не-JSON http тела в Tapestry 5? - PullRequest
4 голосов
/ 16 августа 2010

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

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

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

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

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

Richard

Ответы [ 2 ]

4 голосов
/ 17 августа 2010

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

StreamResponse onActivate() {
     return new TextStreamResponse("text/plain", "foo=bar");
}
3 голосов
/ 17 августа 2010

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

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 добавляет на страницу по умолчанию.Тогда вы можете вернуться к использованию шаблонов.

...