负责排查一个导入功能的bug,debug找到的信息如下:
页面点击导入后,将上传的文件提到到一个controller
public ModelAndView importCSV( HttpServletRequest request, HttpServletResponse response ) throws Exception { s_logger.debug("importCSV: importing csv file "); long startTime = System.currentTimeMillis(); String responseText = ImportContacts.getIFrameResponse(request); response.setContentType("text/html"); response.setContentLength(responseText.length()); response.getWriter().write(responseText); response.getWriter().flush(); response.getWriter().close(); long stopTime = System.currentTimeMillis(); s_logger.stats((stopTime - startTime), Logger.OPERATION_CSV_IMPORT); return null; }
此处将文件中的内容解析为json格式,并放到一个html页面往回输出。responseText的内容为:
<html> <head> </head> <body onload="parent.Jebber.Upload.iFrameLoaded()"> <div id='up_iframecontent'> [{"dt":{"0A-01-0-0":"Tang","08-01-0-0":"Eva"},"dg":5,"rt":33620224}, {"dt":{"0e-04-0-0":"667193","0e-09-0-0":"861E+12","0A-01-0-0":"JIANG","08-01-0-0":"GARY"},"dg":4,"rt":33620224}, {"dt":{"0A-01-0-0":"Guo","0e-02-0-0":"861E+12","08-01-0-0":"Hao"},"dg":6,"rt":33620224}, {"dt":{"0e-04-0-0":"46703676086","08-01-0-0":"KATJA"},"dg":10,"rt":33620224}, {"dt":{"0e-04-0-0":"13910775963","0A-01-0-0":"Du","08-01-0-0":"Peng Bo"},"dg":7,"rt":33620224},{"dt":{"0A-01-0-0":"Li","08-01-0-0":"Wen"},"dg":9,"rt":33620224}, {"dt":{"0A-01-0-0":"wei","08-01-0-0":"melissa."},"dg":3,"rt":33620224}, {"dt":{"0e-04-0-0":"13910621276","08-01-0-0":"孙永平"},"dg":11,"rt":33620224}, {"dt":{"0e-04-0-0":"18605351512","0A-01-0-0":"张老师"},"dg":1,"rt":33620224}, {"dt":{"0e-04-0-0":"13826924038","08-01-0-0":"海光"},"dg":8,"rt":33620224}, {"dt":{"0e-04-0-0":"13810006938","08-01-0-0":"海晓东"},"dg":12,"rt":33620224}, {"dt":{"0e-04-0-0":"861E+12","08-01-0-0":"陶徐"},"dg":2,"rt":33620224}] </div> </body> </html>
因为html页面onload调用一个js函数,但在函数中获取div里的内容出现了问题。
Jebber.Upload = {
doneLoadingFunction: null,
frameName: "hiddenUploadResponse",
divId: "up_iframecontent",
submitFileForm: function(submitForm, newCallback)
{
Jebber.Debug.print("submitFileForm");
Jebber.Debug.assert(newCallback != null, "Upload.submitFileForm(): newCallback must not be null.");
this.doneLoadingFunction = newCallback;
submitForm.target = this.frameName;
submitForm.submit();
},
iFrameLoaded: function()
{
Jebber.Debug.print("Upload.iFrameLoaded called. Things are working.");
Jebber.Debug.print("frame content div undefined?: " + ($J("#" + this.divId).length == 0));
Jebber.Debug.print("frame content div undefined in the frame?: " + (frames[this.frameName].document.getElementById(this.divId) == null));
var hiddenIframeContents = frames[this.frameName].document.getElementById(this.divId).innerHTML;
Jebber.Debug.assert(hiddenIframeContents != "", "Upload.iFrameLoaded: The file was empty. This error should be handled.");
this.doneLoadingFunction(hiddenIframeContents);
},
hiddenIframeContents 的值总是缺少最后的两个括号。
[{"dt":{"0A-01-0-0":"Tang","08-01-0-0":"Eva"},"dg":5,"rt":33620224}, {"dt":{"0e-04-0-0":"667193","0e-09-0-0":"861E+12","0A-01-0-0":"JIANG","08-01-0-0":"GARY"},"dg":4,"rt":33620224}, {"dt":{"0A-01-0-0":"Guo","0e-02-0-0":"861E+12","08-01-0-0":"Hao"},"dg":6,"rt":33620224}, {"dt":{"0e-04-0-0":"46703676086","08-01-0-0":"KATJA"},"dg":10,"rt":33620224}, {"dt":{"0e-04-0-0":"13910775963","0A-01-0-0":"Du","08-01-0-0":"Peng Bo"},"dg":7,"rt":33620224}, {"dt":{"0A-01-0-0":"Li","08-01-0-0":"Wen"},"dg":9,"rt":33620224}, {"dt":{"0A-01-0-0":"wei","08-01-0-0":"melissa."},"dg":3,"rt":33620224}, {"dt":{"0e-04-0-0":"13910621276","08-01-0-0":"孙永平"},"dg":11,"rt":33620224}, {"dt":{"0e-04-0-0":"18605351512","0A-01-0-0":"张老师"},"dg":1,"rt":33620224}, {"dt":{"0e-04-0-0":"13826924038","08-01-0-0":"海光"},"dg":8,"rt":33620224}, {"dt":{"0e-04-0-0":"13810006938","08-01-0-0":"海晓东"},"dg":12,"rt":33620224}, {"dt":{"0e-04-0-0":"861E+12","08-01-0-0":"陶徐"},"dg":2,"rt":33620224
在这一步出现问题后,就没办法往下走了。请问大家如何解决呀?
已解决:
/** *若是英文,则没有问题,但如果是中文,string.length()表示字符的个数,例如: 我爱bj,length=4. *但stream里write 的时候,实际length=8,一个中文字符=3个byte。 *应该取字节的长度。 */ response.setContentLength(responseText.getBytes("UTF-8").length());
相关推荐
这些异常代表了不同类型的错误,比如类型不匹配、值错误或导入模块失败等。 10.7 创建异常 如果你需要自定义异常,你可以继承自 `Exception` 类或其子类。例如: ```python class CustomError(Exception): pass ...
1. 抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常对象提交给解释器。 2. 捕获异常:解释器得到该异常后,寻找相应的代码来处理该异常。 解决异常...
* EOFException:文件完毕异常,用于描述文件结束的异常。 * InterruptedException:中断异常,用于描述线程的中断异常。 * Try:尝试,用于描述异常的捕捉。 * Catch:捕捉,用于描述异常的捕捉。 * Finally:最后...
在Web开发中,有时我们需要将用户的数据从CSV(逗号分隔值)文件导入到网页或后端系统中。CSV格式因其简洁性和通用性而广泛用于数据交换。本知识点主要探讨如何实现一个Web页面,允许用户上传CSV文件,并进行相关的...
- EOFException:文件结束异常,读取文件时到达文件末尾。 - InterruptedException:线程中断异常,线程被中断。 - try/catch/finally:异常处理结构,try块中可能抛出异常的代码,catch捕获并处理异常,finally确保...
7. **StandardError**:所有的内建标准异常的基类,它本身是Exception的子类,包含了所有非系统退出和非键盘中断的错误。 8. **ArithmeticError**:所有数值计算错误的基类,包括以下子类: - **...
1. **更新信任库**:检查并更新`JAVA_HOME/jre/lib/security/cacerts`文件,导入服务器证书的签发者CA或整个信任库。 2. **禁用主机名验证**:对于开发环境,可能需要临时禁用SSL主机名验证,但这不适用于生产环境,...
除了程序自动抛出异常,还可以通过`raise`或`assert`语句主动引发异常: - `raise`语句可以用于重新抛出异常,或创建并抛出新的异常实例。 - `assert`语句用于断言某个条件为真,条件不满足时引发`AssertionError`。...
`NoClassDefFoundError` 是Java运行时异常的一种,与`ClassNotFoundException`不同,它意味着类在编译时存在,但在运行时却无法找到。这个问题可能由于多种原因引起,如依赖缺失、类路径设置不正确或者类加载器问题...
12. 静态导入异常:为了简化代码,可以使用静态导入`java.lang.RuntimeException`等常见的异常类。 这些知识点构成了Java异常处理的基础,理解和掌握它们对于编写健壮的Java程序至关重要。在实际开发中,合理地使用...
Java 解析 XML 并导入数据库(DOM4J) Java 解析 XML 并导入数据库是指使用 Java 语言将 XML 文件解析并将其内容导入到数据库中。...该示例代码提供了一个基本的框架,用于开发 XML 文件导入数据库的应用程序。
文件"sqljdbc_2.0"可能包含jar文件,如`sqljdbc4.jar`,这个jar文件包含了所有必需的类和资源,以便Java应用程序可以使用JDBC驱动连接到SQL Server。 要建立连接,Java开发者需要导入以下关键的JDBC包: ```java ...
当尝试使用Sqoop从MySQL导入数据到HBase时,可能需要特定的JAR文件来处理MySQL的数据格式和HBase的存储模型之间的差异。 描述中提到的"报错空指针,且提示json错误",这通常是由于JSON解析问题导致的。JSON...
当需要处理Excel文件时,我们可以利用第三方库来实现Excel的导入功能。本示例中,我们主要讨论两种方法:使用jxl库和fastexcel库。 1. **jxl库**: `jxl` 是一个广泛使用的Java库,允许开发者读取、写入和修改...
在.NET框架中,C#语言提供了丰富的库来处理Excel...以上就是使用C#和Excel组件进行Excel文件导入导出的基本步骤和关键知识点。在实际应用中,可以根据具体需求进行扩展,例如添加数据验证、格式设置、图表创建等功能。
* EOFException:文件结束异常,用于表示 Java 文件结束异常。 * InterruptedException:(线程)中断异常,用于表示 Java 线程中断异常。 * Try:尝试,用于表示 Java 语言的 try-catch 语句。 * Catch:捕捉,用于...
四、文件导入 对于文件数据源,如CSV或Excel,可以使用FileHelper库或Microsoft.Office.Interop.Excel库来读取数据。例如,使用FileHelper读取CSV文件: ```csharp using FileHelper; var engine = new ...
- **`java.io.EOFException`**:文件已结束异常。 - **`java.io.FileNotFoundException`**:文件未找到异常。 - **`java.lang.NumberFormatException`**:字符串转换为数字异常。 - **`java.sql.SQLException`**...