关于这个主题有很多讨论,但没有真正的解决方案。
如果我使用
,这是我的问题1)@Produce(“application / Json”)json响应显示在< pre>中标签
2)如果我使用@Produce(“application / html”)或@Produce(“text / html”),那么使用JAXB异常重新安排故障和错误输出:
Uncaught Ext.Error:您正在尝试解码无效的JSON字符串:
类型状态报告
消息无法找到媒体类型的JAXBContextFinder:text / html
描述服务器遇到内部错误(无法找到媒体类型的JAXBContextFinder:text / html),导致无法完成此请求。
我迫切希望得到一些帮助,并且表格中提出了一些解决方案: 1)将内容类型更改为text / html 2)更新ExtJs源代码 3)解析<预>从JSON响应中标记 不想做第二和第三,但在Ist中,我想要一个有效的JSON输出。我怎么能这样做?
这是我的serverice类:
@POST
@Path("/bulkUpdate")
@Consumes("multipart/form-data")
@Produces({"application/json"})
public ExtjsJson<DataException> uploadFile(MultipartFormDataInput input) {
Map<String, List<InputPart>> uploadForm = input.getFormDataMap();
List<InputPart> inputParts = uploadForm.get("uploadedFile");
List<DataException> list = new ArrayList<DataException>();
final ExtjsJson<DataException> returnObj = new ExtjsJson<DataException>();
for (InputPart inputPart : inputParts) {
try {
MultivaluedMap<String, String> header = inputPart.getHeaders();
String fileName = getFileName(header);
InputStream inputStream = inputPart.getBody(InputStream.class, null);
byte[] bytes = IOUtils.toByteArray(inputStream);
//handle the excel file upload and return the error if the file does not have valid data some like...
DataException error = new DataException("supervisor", "columnName", 1, "SheetName", "this is not a valid supervisor");
list.add(error);
} catch (IOException e) {
e.printStackTrace();
}
}
returnObj.setSuccess(true);
returnObj.setResults(list);
return returnObj;
}
这是我的响应Object DataException.java
@Data
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class DataException {
//private static final long serialVersionUID = 1L;
/** excel sheet name */
private String sheetName;
/** row number of the excel sheet */
private int rowNumber;
/** field name/cell header **/
private String fieldName;
/** cell value */
private String fieldValue;
private String description;
}
这是错误(带标记的JSON响应)
Uncaught Ext.Error:您正在尝试解码无效的JSON字符串:&lt; pre style =“word-wrap:break-word; white-space:pre-wrap;”&gt; {“total”:1 ,“success”:true,“results”:[{“description”:“这不是有效的主管”,“fieldName”:“supervisor”,“fieldValue”:“testPM”,“rowNumber”:1,“sheetName” “:” 工作表Sheet“ }]}&LT; /预&GT;
答案 0 :(得分:0)
我遇到了同样的问题,我的解决方案是:
@Produces("text/html")
您的方法需要将字符串发送回前端:
public String uploadFile (...)
toString()
方法,该方法以String格式返回它。