命令在后台执行引发"不是(可编码的)值"错误



我当前正在尝试在后台实现文件导出,以便用户可以在下载文件时执行一些操作。

我使用了Apache ISIS CommandExexuteIn:Background操作属性。但是,我有一个错误"不是(编码(值",这是 scalarvaluerenderer class> class。

引发的错误

这就是我的方法的样子:

@Action(semantics = SemanticsOf.SAFE,
        command = CommandReification.ENABLED)
        commandExecuteIn =  CommandExecuteIn.BACKGROUND)
public Blob exportViewAsPdf() {
    final Contact contact = this;
    final String filename = this.businessName + " Contact Details";
    final Map<String, Object> parameters = new HashMap<>();
    parameters.put("contact", contact);
    final String template = templateLoader.buildFromTemplate(Contact.class, "ContactViewTemplate", parameters);
    return pdfExporter.exportAsPdf(filename, template);
}

我认为该错误与命令无关,实际上没有调用操作,而是返回持久的背景命令。

此实现实际上在没有返回类型的方法上起作用。我错过了什么?还是有一种方法可以实现背景命令并获得预期的结果?

有趣的用例,但是当实现框架的那一部分时,这不是我所期望的,所以我并不感到惊讶,它行不通。显然,您在这里收到的错误消息非常晦涩,所以我已经提出了一个吉拉票,看看我们是否至少可以改进。

我有兴趣知道您认为框架应该在这里提供的用户体验?

在我们处理的estatio应用程序中(在过去几年中驱动了许多添加到框架中的功能(,我们有一些类似的要求,以从报告服务器获得PDF(这需要5到10秒(然后下载它们。这是为购物中心的所有租户提供的,因此可能有5至50个租户在一次旅行中产生。我们所使用的设计是将渲染移动到背景命令中(类似于templateloader.buildfromtemplate(...(和pdfexporter.exportaspdf(...(方法在您的代码片段中调用,并将输出作为文档捕获输出,通过文档模块。然后,我们使用pdfbox插件将所有文档pdf一起缝合在一起,作为单个可下载的PDF用于打印。

希望您能为您提供一些支持用例的方式

ThxDan

最新更新