如何浏览和阅读文件(XML)并在Ext的textarea中显示?
我尝试使用Java上传XML文件并将其读取并将响应作为XML字符串发送,但我无法在前端接收数据(获得异常“return eval(”(“ + json +“)”)“extjs.all
}?
我在Ext中的代码
var win = new Ext.Window({
layout: 'fit',
title: 'XML Upload Window',
id: 'winFileRead',
resizable: false,
modal: true,
closeAction: 'close',
closable: true,
plain: true,
items: [{
xtype: 'form',
id: 'frmFileRead',
fileUpload: true,
width: 500,
frame: true,
monitorValid: true,
autoHeight: true,
bodyStyle: 'padding: 10px 10px 0 10px;',
labelWidth: 50,
defaults: {
anchor: '95%',
allowBlank: false,
msgTarget: 'side'
},
items: [{
xtype: 'fileuploadfield',
id: 'verFileReadCmp',
emptyText: 'Select a File to import',
fieldLabel: 'File',
name: 'file',
buttonCfg: {
text: '',
iconCls: 'upload-icon'
}
}],
buttons: [{
formBind: true,
text: 'Upload',
handler: function() {
var fp = Ext.getCmp('frmFileRead');
if (fp.getForm().isValid()) {
fp.getForm().submit({
url: 'viewXml.do',
params: {},
method: 'POST',
waitMsg: 'Uploading your file...',
success: function(fp, o) {
if (Ext.decode(o.response.responseText).success) {
//Set the XML value to the textarea. Ext.getCmp('textareaXML').setValue(Ext.decode(o.response.responseText).message);
} else {
Util.showAlert('Err', Ext.decode(o.response.responseText).message);
}
},
failure: function(response, options) {
Util.showAlert('Err', response.responseText);
},
exception: function(a, b, c, d) {}
});
}
}
},
{
text: 'Reset',
handler: function() {
var fp = Ext.getCmp('frmFileRead');
fp.getForm().reset();
}
}]
}]
}); win.show();
*****************************
Java
****************************
protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws ServletException, IOException
{
UploadFileTO uploadFileTO = (UploadFileTO) command;
List<XmlTO> al=new ArrayList<XmlTO>();
Map<String,String> model = new HashMap<String,String>();
MultipartFile file = uploadFileTO.getFile();
InputStream inputStream = null;
String xmlString="";
String xml=null;
if (file.getSize() > 0) {
inputStream = file.getInputStream();
int readBytes = 0;
byte[] buffer = new byte[10000];
while ((readBytes = inputStream.read(buffer, 0 , 10000))!=-1)
{
xml=new String(buffer, 0, readBytes);
xmlString=xmlString.concat(xml);
}
inputStream.close();
}
if (!xmlString.equals("")){
System.out.println( xmlString );
model.put("result", "{success:true, message: \""+xmlString+"\"}");
}else{
model.put("result", "{success:false, message: \"File upload error.\"}");
}
return new ModelAndView("index", model);
}
****************************
Exception message in JSON evaluation.
*******************************
<TABLE width=400>
<P style="FONT: 13pt/15pt verdana">The XML page cannot be displayed
<P style="FONT: 8pt/11pt verdana">Cannot view XML input using style sheet. Please correct the error and then click the <A href="javascript:location.reload()" target=_self>Refresh</A> button, or try again later.
<HR>
<P
style="FONT: bold 8pt/11pt verdana">
Invalid at the top level of the document. Error processing resource 'http://XXXXXXXX/viewXml.do'.
</P><PRE
style="LINE-HEIGHT: 12pt; FONT-VARIANT: normal; FONT-STYLE: normal; FONT-SIZE: 10pt; FONT-WEIGHT: normal"
><FONT color=blue></FONT>
</PRE>
</P>
<TBODY>
</TBODY>
</TABLE>
答案 0 :(得分:1)
还需要查看您的XML。你的代码似乎很好。这些指南可以帮助您解决问题:
我相信这个问题是由这三者中的一个或组合引起的。我刚刚用json尝试了你的代码并且工作正常:
{success:true, message: '<?xml version=\'1.0\' encoding=\'ISO-8859-1\'?><note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Test body..</body></note>'}
XML在ExtJS文本区域上呈现得非常好。