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