【问题标题】:Return non-HTML, non-JSON http bodies in Tapestry 5?在 Tapestry 5 中返回非 HTML、非 JSON http 正文?
【发布时间】:2011-03-30 14:05:57
【问题描述】:

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

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

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

或者我应该只使用另一个更适合我需要的框架?

感谢您的建议,

理查德

【问题讨论】:

    标签: java oauth tapestry


    【解决方案1】:

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

    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 内容。然后你可以回到使用模板。

    【讨论】:

    • 非常感谢您提示我正确的方向。我的解决方案更简单。
    • 很好 - 我不知道 TextStreamResponse。
    【解决方案2】:

    Brian 将我推向了正确的方向,但问题的实际解决方案更加简单:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-08
      • 2018-11-03
      • 1970-01-01
      • 1970-01-01
      • 2012-05-17
      • 2019-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多