我正在上传文件,所有内容都上传得很好。我想返回一个定义了主键的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的其他人身上。
答案 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响应。