如何在文件上载操作中返回JSON

时间:2014-02-27 19:41:10

标签: moqui

我正在上传文件,所有内容都上传得很好。我想返回一个定义了主键的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对象(错误&gt;资源被解释为Document但是使用MIME类型application / json传输:)

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

2 个答案:

答案 0 :(得分:0)

答案很简单。

     String resp = "<textarea>{\"offerId\": \"${offer.offerId}\"}</textarea>"
     //ec.web.sendJsonResponse(resp)
     ec.web.response.writer.write(resp)

答案 1 :(得分: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响应。