0

我正在上传一个文件,一切都很好。我想返回一个定义了主键的 JSON 对象,所以我这样做:

ec.web.sendJsonResponse("{offerId: '${offer.offerId}'}")

它以我的 javascript 接收代码所期望的方式打包东西(因为它是一个文件上传操作),但它像这样包装:

    <html>
    <head></head>
    <body>
    <pre style="word-wrap: break-word; white-space: pre-wrap;">
        <textarea>{offerId: '100030'}</textarea></pre>
    </body>
    </html>

并且“pre”标签使我的“getElementsByTagName”无法找到“textarea”元素。

我知道 WebResource.sendJsonResponse 没有添加它。它将 contentType 设置为 json 并且接收代码正在抱怨,因为它需要一个 DOM 对象(错误>资源解释为 Document 但使用 MIME 类型 application/json 传输:)

我该如何解决这个问题?我想这确实是一个 J2EE 问题,但它可能会发生在 moqui 的其他人身上。

4

2 回答 2

0

答案很简单。

     String resp = "<textarea>{\"offerId\": \"${offer.offerId}\"}</textarea>"
     //ec.web.sendJsonResponse(resp)
     ec.web.response.writer.write(resp)
于 2014-02-27T21:28:37.553 回答
0

在 moqui 中,ec.web.sendJsonResponse 旨在发送回 JSON 响应。因此在屏幕转换中处理上传很简单,您可以添加:

def respMap = [:]
respMap.put("offerId", offer.offerId)
ec.web.sendJsonResponse(respMap)

同时将默认响应类型定义为“无”

<default-response type="none"/>

您可以使用 respMap 组合任何类型的更复杂的 JSON 对象,然后使用 ec.web.sendJsonResponse 方法,该方法会自动将响应映射内容发送到 JSON 响应。

于 2014-03-02T02:44:04.663 回答