[Apache Tapestry]:将页面内容作为流/或字符串

时间:2016-12-23 22:13:18

标签: java tapestry

我想直接将页面内容作为一个流/或来自Page.class的字符串。

目前:我必须经历这条路线:

String uri = linkSource.createPageRenderLink(AnotherPage.class).toAbsoluteURI();
IOUtils.toString(uri, "UTF-8")

这种方法的问题是对toAbsoluteURI()的调用使得框架感觉来自外部源的请求;并要求用户再次登录;不应该是这种情况,因为它的一个tapestry页面在同一个应用程序中访问另一个。

注意:我没有尝试"重定向"到AnotherPage.class。我只想将另一个页面的内容作为字符串,而不必通过toAbsoluteURI()等。

或者,将另一个页面的内容作为Stream也可以使用。

我正在使用Apache Tapestry 5.4.1

2 个答案:

答案 0 :(得分:0)

看一下tapestry-offline模块。它允许您从Tapeatry生成的页面轻松获取HTML。

https://github.com/uklance/tapestry-offline

答案 1 :(得分:0)

让方法onActivate返回StreamResponse的实现,例如

public StreamResponse onActivate(Long productId) {
    return new TextStreamResponse("text/csv", convertProductToCsv(productId));
}

默认情况下,页面会返回一个模板,但这样就会覆盖该行为。

查看此页面:https://wiki.apache.org/tapestry/Tapestry5HowToStreamAnExistingBinaryFile