4

我必须在使用Tapestry5的项目中实现OAuth协议的服务提供者。因此,我只需要返回一个既不是 HTML 也不是 JSON 的非常简单的 HTTP 响应正文。

起初我尝试使用标准的 tml & pojo (java class, page) 方法,但这不起作用,因为 Tapestry 尝试解析模板。

所以我想我必须尝试一些不同的东西。也许可以在页面中使用 render() 方法?但我找不到任何可以回答这个问题的文档。

还是我应该只使用另一个更适合我需求的框架?

感谢您的意见,

理查德

4

2 回答 2

4

布赖恩把我推向了正确的方向,但问题的实际解决方案更简单:

StreamResponse onActivate() {
     return new TextStreamResponse("text/plain", "foo=bar");
}
于 2010-08-17T09:24:56.667 回答
3

您可以直接从页面流式传输文本,而无需使用模板:

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,它可以让您绕过 Tapestry 默认添加到页面的所有 xml/html/head 内容。然后你可以回到使用模板。

于 2010-08-16T21:57:08.640 回答