2013-05-07 7 views
1

Я хочу заполнить список строк из формы.java.lang.IllegalArgumentException: несоответствие типа аргумента

Моя форма боба:

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;   

    } 
    } 

Мой 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> 

ситуация является textarea может быть в любом количестве, я хочу, чтобы получить string в textarea, который будет заполнен до formbean.

Но это дает следующее сообщение об ошибке:

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) 

Кто-нибудь есть какие-либо идеи?

ответ

1

Возможно, что вы пытаетесь показать значения неверно. Попробуйте что-то вроде этого:

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

хотел бы знать, как вы хотите, чтобы отобразить элементы списка?

EDIT:

Вот он идет:

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

Независимо от значения будут введены в текстовые поля так созданы, будут автоматически заполняться в списке задача

+0

спасибо за ответ , На самом деле у меня есть список текстовой области, в которой логируемый пользователь должен вводить свои запланированные задачи, по одному для каждой текстовой области, я хочу, чтобы эта задача в TaskAction.java хранила ее в help.base.pls – Bhaskar

+0

Для этого , могут быть два случая: 1. Если есть несколько (возможно, четыре или пять) задач, тогда у вас может быть четыре или пять разных полей в вашем классе действий, которые помечаются по именам из четырех-пяти текстовых областей в jsp. 2. Вышеупомянутое в идеале не должно быть так, как в будущем может быть увеличение задач, поэтому вы должны создавать больше областей текста и соответствующих полей в классе действий. Для этого: либо вы можете иметь одну текстовую область, и попросить пользователя ввести задачи, разделенные запятой, а затем проанализировать их в вашем классе действий. –

+0

mine - это случай два, но могут быть сотни текстовых полей (это требование обязательно), поэтому здесь я хочу, чтобы текст вводился в каждую текстовую область для загрузки в список (в виде bean-компонента), но я не мог это сделать, как могу ли я достичь желаемого результата в этом сценарии – Bhaskar

Смежные вопросы