【问题标题】:tapestry5 page to render plain textTapestry5 页面呈现纯文本
【发布时间】:2023-03-26 14:23:02
【问题描述】:

我一直在寻找但找不到文档:

有没有办法让页面在没有包装 HTML 元素的情况下呈现响应,并且只打印 tml 正文中提供的任何内容,或者在 @BeginRender 期间在 MarkupWriter.write 中设置的任何内容?

我需要一个页面来执行一些服务器端处理并返回纯 javascript 以供外部应用程序请求。

如果这是不可能的,是否可以将挂毯 Ioc 暴露给同一应用程序中的 servlet?

谢谢,p。

【问题讨论】:

    标签: tapestry


    【解决方案1】:

    抱歉,ponzao,但我在挂毯邮件列表中找到了由 Thiago 提供的更好的解决方案:

    public class MyPage
    {
        StreamResponse onActivate()
        {
            return new TextStreamResponse("text/plain", "some text");
        }
    }
    

    这样您就不需要恢复到 servlet API 也不需要 tml。

    改编自此,例如: http://wiki.apache.org/tapestry/Tapestry5HowToCreateADynamicPDF

    【讨论】:

    • 好吧,看起来更像 Tapestryesque。
    • 顺便说一句,选择它作为正确答案,这样这个问题就不会一直没有答案;)
    【解决方案2】:

    一种可能性是在@BeginRender 中使用MarkupWriter.writeRaw 而不是MarkupWriter.writeHere 是 API 文档的链接。

    编辑:如果您不希望文档包含除文本内容之外的任何其他内容,这是实现此目的的一种方法。

    @Inject
    private Response response
    
    void onActivate() throws IOException {
        PrintWriter writer = response.getPrintWriter("text/html");
        writer.append("foobar");
        writer.close();
    }
    

    【讨论】:

    • .. 但是 .tml 仍然会被渲染,这意味着 html 仍然会打印到响应中.. 对吗?据我所知,我必须有一个 tml 并且它必须有一个 元素
    • 啊,好吧,假设你有一些像 这样的代码,并且你想要这样,而不是包裹在 中...然后您可以随时注入响应并在 onActivate 中获取 OutputStream 或 PrintWriter 并手动编写响应,我将添加一个示例。
    • 谢谢,太好了。仅供参考,您仍然需要一个 .tml 文件,否则 Tapestry 会引发异常(内部)。
    • 很高兴为您提供帮助。好的,很高兴知道,我没有真正广泛地测试我的解决方案 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多