我正在使用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
“手动”生成响应。如果我只是从事件处理程序返回一个块实例,则在触发事件时会抛出异常。
感谢。