通过Tapestry块进行部分标记

时间:2016-06-02 09:26:58

标签: ajax tapestry

我正在使用Tapestry 5.3。

在Tapestry组件中,我正在尝试实现一个事件处理程序来创建对AJAX请求的响应。

我知道我可以调用MarkupWriterFactory#newPartialMarkupWriter来获取MarkupWriter的实例,然后使用此实例生成响应。内置的mixin Autocomplete以这种方式生成对AJAX请求的响应。这是一个简单的例子:

@Inject
private MarkupWriterFactory markupWriterFactory;

@OnEvent("myevent")
Object generatePartialMarkup() {
    final ContentType contentType = new ContentType("text/html");
    final MarkupWriter markupWriter = markupWriterFactory.newPartialMarkupWriter(contentType);
    markupWriter.element("hr");
    markupWriter.end();
    return new TextStreamResponse(contentType.toString(), markupWriter.toString());
}

然而,这对于部分HTML来说是一个笨拙的解决方案,它比hr元素复杂得多。我想知道是否有机会使用Tapestry块创建此类响应,而不是通过MarkupWriter“手动”生成响应。如果我只是从事件处理程序返回一个块实例,则在触发事件时会抛出异常。

感谢。

1 个答案:

答案 0 :(得分:1)

看起来你让自己的生活变得困难。从我所看到的,您可以使用eventlinkzone和返回Block的事件处理程序来解决此问题。有关详细信息,请参阅here

不完全确定您正在做什么,但如果您需要将块呈现为字符串,请参阅捕获组件here