java.lang.IllegalArgumentException:参数类型不匹配

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/16414858/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-31 22:53:34  来源:igfitidea点击:

java.lang.IllegalArgumentException: argument type mismatch

javastruts

提问by Bhaskar

I want to populate a list of strings from a form.

我想从表单中填充字符串列表。

My form bean:

我的形式豆:

public class TaskForm extends ActionForm{
    List<String> task = new ArrayList<String>();
    public List<String> getTask() {
        return task;
    }
    public void setTask(List<String> task) {        
            this.task=task;         

    }
    }

My jsp:

我的jsp:

while (it.hasNext()) {
<textarea class="SubTaskTextArea_Style" id="task" name="task"></textarea></td>
}

strutsconfig:

支柱配置:

<form-beans>
    <form-bean name="TaskForm" type="controller.form.TaskForm" />

</form-beans>
<action-mappings>
    <action path="/TaskAction" type="task.action.TaskAction" name="TaskForm">
</action-mappings>

The situation is the textareacan be in any number, I want to get the string in textarea to be populated to the formbean.

情况是textarea可以是任意数字,我想将 textarea 中的字符串填充到formbean.

But it gives the following error:

但它给出了以下错误:

javax.servlet.ServletException: BeanUtils.populate
    org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1099)
    org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:798)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1422)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:523)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)


root cause 

java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.commons.beanutils.PropertyUtils.setSimpleProperty(PropertyUtils.java:1789)
at org.apache.commons.beanutils.PropertyUtils.setNestedProperty(PropertyUtils.java:1684)
at org.apache.commons.beanutils.PropertyUtils.setProperty(PropertyUtils.java:1713)
at org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:924)
at org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:729)
at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1097)
at org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:798)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1422)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:523)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Anybody have any idea?

有人有什么想法吗?

采纳答案by roger_that

Probably the way you are trying to show the values is not correct. Try something like this:

您尝试显示值的方式可能不正确。尝试这样的事情:

<s:iterator value="task">
       <textarea><s:property /></textarea>
</s:iterator>

Would like to know how you want to display the list items ?

想知道您想如何显示列表项?

EDIT:

编辑:

Here it goes:

它是这样的:

<%int i = 0; %>
<s:iterator value="task">
    <input type = "text" name = "t<%=i++%>" value="<s:property/>">
</s:iterator>

Whatever values would be entered in the text fields so created, will automatically be populated in the list task

无论在如此创建的文本字段中输入什么值,都将自动填充到列表任务中