java - 为什么在尝试从表单获取数据时会出现此错误?

标签 java javascript forms

这是我得到的错误:

14:06:00,355 ERROR [JsonFilter] java.lang.NoSuchMethodException: byte.<init>(java.lang.String)

我有一个带有输入文件的基本上传表单:

<form method='post' enctype='multipart/form-data'>
<table>
<input type='file' name='logo'>
</table>
</form>

当我提交时,它会调用一个setter servlet,servlet内部有一个extract()来获取数据:

if (fileUp.getContent("compLogo") != null) 
        {
            record.compLogo = fileUp.getContent("compLogo").getData();
        } else
            System.out.println("logo was null!");

        return record;  

但问题是,它在获得 extact 函数之前就抛出了该错误,我在它之前放置了许多系统输出,这样我就知道这些函数是如何移动的。

15:07:06,915 ERROR [JsonFilter] java.lang.NoSuchMethodException: byte.<init>(java.lang.String)
javax.servlet.ServletException: java.lang.NoSuchMethodException: byte.<init>(java.lang.String)
    at com.pinksheets.common.web.req.HttpExtractor.getObject(HttpExtractor.java:160)
    at com.pinksheets.common.web.req.HttpExtractor.extract(HttpExtractor.java:88)
    at com.pinksheets.common.web.servlet.FetcherServlet.doGet(FetcherServlet.java:52)
    at com.pinksheets.common.web.servlet.FetcherServlet.doPost(FetcherServlet.java:62)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at com.pinksheets.common.web.filter.RoleAuthFilter.doFilter(RoleAuthFilter.java:78)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at com.pinksheets.common.web.filter.UserAuthFilter.doFilter(UserAuthFilter.java:49)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at com.pinksheets.common.web.filter.JsonFilter.doFilter(JsonFilter.java:81)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
    at org.jboss.web.tomcat.service.session.ClusteredSessionValve.handleRequest(ClusteredSessionValve.java:135)
    at org.jboss.web.tomcat.service.session.ClusteredSessionValve.invoke(ClusteredSessionValve.java:94)
    at org.jboss.web.tomcat.service.session.LockingValve.invoke(LockingValve.java:62)
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoSuchMethodException: byte.<init>(java.lang.String)
    at java.lang.Class.getConstructor0(Unknown Source)
    at java.lang.Class.getConstructor(Unknown Source)
    at com.pinksheets.common.web.req.HttpExtractor.getObject(HttpExtractor.java:142)
    ... 37 more

这会生成 html 代码

EditSplashPageDOM.generate = function (value, callback)
{
    var elem, output = document.createElement('form');
    output.myValue = value;
    output.myCallback = callback;
    output.method = 'post';
    output.enctype = 'multipart/form-data';
    output.onsubmit = function(ev) { callback.handleSubmit(value, this); return false; };
    output.appendChild(InputField.genHidden ('id', value.id));
    output.appendChild(InputField.genHidden ('name', value.name));

    var div, p;
    output.appendChild(div = document.createElement('div'));
    div.appendChild(p = document.createElement('p'));
    p.innerHTML = 'The Splash Page list all the information for the current ad. You may update to change the Splash Page.<br /><span class="footnote">*The info shown are data of the latest ad and the proper format.*</span>';

    var table = document.createElement('table');
    output.appendChild(table);
    table.className = 'detail';

    this.createRow(table, 'Company Symbol', 'compSymbol', value.compSymbol, 100, 50);
    this.createRow(table, 'Company Sec Id', 'secId', value.secId, 100, 50);

    this.createFileRow(table, 'Company Logo', 'compLogo', 100, 47); //this is for input the file

    row = table.insertRow (table.rows.length);
    cell = row.insertCell(0);
    cell.colSpan = 2;
    cell.className = 'detailAction'
    cell.appendChild(elem = InputField.genSubmit('Submit', 'Insert New Ad'));

    return output;
}

这是提交函数

EditSplashPageSimple.prototype.handleSubmit = function(value, form)
{

    value.compLogo = form.compLogo.value;
    value.compPAL = form.compPAL.value;
    value.compUrl = form.compUrl.value;

    if(value.compLogo == null)
        window.alert("comp logo is null");
    else 
        window.alert("logo is " + value.compLogo);

    var me = this;
    me.caller.setSplashPage(value);
                    {
                        handleRequestData : function(status) {
                            window.alert('Splash Page is successfully updated with new company ' + value.compSymbol);
//                          me.callback.handleAddition(value);
                        },
                        handleRequestError : function(error) {
                            // Only deal with validation exceptions.
                        if (!error.isValidationException) {
                            window.alert('Sorry, there was an error while trying to add the new information. Please double check the data.');
                            throw error;
                        }

                        window.alert(error.message);
                        var e;
                        if (error.field && (e = form.elements[error.field])) {
                            window.alert('error.field error idk');
                            e.focus();
                        }
                    }
                    });
}

提交时会调用servlet

System.out.println("now to extract the content of the file and set it to the logo var");
            SplashPage record = (new SplashPageLogoAdapter(request)).extract();

extract() 与我发布的相同

最佳答案

看起来这个com.pinksheets API假设它在某个时刻遇到的一个类将有一个采用String的构造函数;当它发现有问题的类是byte(即java.lang.Byte.TYPE,它没有这样的构造函数)时,你会得到一个异常。

我想看看com.pinksheets.common.web.req.HttpExtractor.getObject()的源代码;您将在那里看到发生了什么。

关于java - 为什么在尝试从表单获取数据时会出现此错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7098106/

相关文章:

java - 如何正确地将TextureRegion映射到Pixmap?

java - 如何获取jmDNS ServiceInfo描述字符串

javascript - 在 Jest 中模拟 document.querySelector

.net - 如何使用 C# 从指定的上下文菜单中获取父控件?

php - 单击按钮时无法产生 Action

php - 文件上传无法以组合 php 形式工作,而是单独工作

java - 实例化新对象与实现 reset() 方法

java - Spring Saml FilterChainProxy 清除上下文 - null 身份验证

javascript - 在 AngularJS 中使用 JSON 数组的嵌套 Controller

javascript - 我是否正确地以 Base64 编码图像?