2013-11-10 56 views
1

org.springframework.web.util.NestedServletException:請求處理失敗;嵌套異常是java.lang.NumberFormatException:對於輸入字符串:「」請求處理失敗;嵌套異常是java.lang.NumberFormatException:對於輸入字符串:「」

我正在嘗試使用僅註釋,java,JSPs,spring數據,spring mvc和mongo db構建一個web應用程序。

我已經掌握了大部分工作,但是當我嘗試創建一個帶有多個選擇列表的JSP表單時,我得到了標題錯誤。

我想創建一個代理對象,並將其保存到mongodb數據庫。多選框正在傳回選定對象的字符串ID。代理對象具有需要用多選列表填充的列表。

這裏是Chrome瀏覽器開發工具的響應數據:

id: name:Test1 type:MOB 
attributeList[]:687a1964-4179-4631-832b-e23b34300840 
personalityTraitList[]:8b321f3c-6398-4bc4-afc6-e6c7e4a6a3e3 
skillList[]:53090226-0f54-4121-90c0-4d3a188aa5f8 
triggerList[]:923048ef-7a4d-42e3-8691-2d2e9603e79b 
behaviorTreeList[]:84966b7a-fb53-4f64-be2a-203ae3743250 

這是第一個多選擇框的HTML。他們都是一樣的。

<td align="left"> 
    <select size="10" id="selectedAttributes" multiple="multiple" name="attributeList[${attribute.id}]" style="width: 130px;"></select> 
</td> 

這裏是控制器保存請求映射:

@RequestMapping(value = "/AgentManager/save", method = RequestMethod.POST) 
public View createAgent(@ModelAttribute Agent agent, ModelMap model) 
{ 
    if(StringUtils.hasText(agent.getId())) 
    { 
     agentService.updateAgent(agent); 
    } else 
    { 
     agentService.addAgent(agent); 
    } 

    return new RedirectView("/MotherNatureEmulator/AgentManager"); 
} 

代理服務將如果要保存劑時,ID字段爲空創建隨機UUID。

這裏是堆棧跟蹤:

java.lang.NumberFormatException:對於輸入字符串: 「」 java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) java.lang.Integer中。 parseInt函數(Integer.java:504) java.lang.Integer.parseInt(Integer.java:527) org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:969) org.springframework.beans.BeanWrapperImpl.setPropertyValue (BeanWrapperImpl.java:902) org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropert yAccessor.java:75) org.springframework.validation.DataBinder.applyPropertyValues(DataBinder.java:740) org.springframework.validation.DataBinder.doBind(DataBinder.java:636) org.springframework.web.bind.WebDataBinder .doBind(WebDataBinder.java:191) org.springframework.web.bind.ServletRequestDataBinder.bind(ServletRequestDataBinder.java:112) org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor.bindRequestParameters(ServletModelAttributeMethodProcessor.java :153) org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:106) org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:77) org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:162) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:123) org.springframework.web.servlet .mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745) org.springframework.web.servlet .mvc.method.annotation.RequestMappingHandlerAdapter。handleInternal(RequestMappingHandlerAdapter.java:686) org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936) org.springframework.web.servlet.FrameworkServlet.doPost (FrameworkServlet.java:838) javax.servlet.http.HttpServlet.service(HttpServlet.java:647) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javax.servlet.http包。 HttpServlet.service(HttpServlet.java:728)

我試着創建一個自定義數據綁定器,但沒有幫助。

任何人都可以指導我以正確的方式做這些事嗎?這是我第一次嘗試自己製作網絡應用程序。

這裏是代理類:

@Document(collection = "AgentCollection") 
public class Agent 
{ 
@Id 
private String _id; 

private String _name; 
private String _type; 
private ArrayList<String> _actionList; 
private ArrayList<String> _attributeList; 
private ArrayList<String> _behaviorTreeList; 
private ArrayList<String> _itemList; 
private ArrayList<String> _personalityTraitList; 
private ArrayList<String> _skillList; 
private ArrayList<String> _triggerList; 


public String getId() 
{ 
    return _id; 
} 


public void setId(String id) 
{ 
    _id = id; 
} 


public String getName() 
{ 
    return _name; 
} 


public void setName(String name) 
{ 
    _name = name; 
} 


public String getType() 
{ 
    return _type; 
} 


public void setType(String type) 
{ 
    _type = type; 
} 


public ArrayList<String> getAttributeList() 
{ 
    return _attributeList; 
} 


public void setAttributeList(final ArrayList<String> attributeList) 
{ 
    _attributeList = attributeList; 
} 


public ArrayList<String> getPresonalityTraitList() 
{ 
    return _personalityTraitList; 
} 


public void setPersonalityTraitList(final ArrayList<String> personalityTraitList) 
{ 
    _personalityTraitList = personalityTraitList; 
} 


public ArrayList<String> getSkillList() 
{ 
    return _skillList; 
} 


public void setSkillList(final ArrayList<String> skillList) 
{ 
    _skillList = skillList; 
} 


public ArrayList<String> getActionList() 
{ 
    return _actionList; 
} 


public void setActionList(final ArrayList<String> actionList) 
{ 
    _actionList = actionList; 
} 


public ArrayList<String> getTriggerList() 
{ 
    return _triggerList; 
} 


public void setTriggerList(final ArrayList<String> triggerList) 
{ 
    _triggerList = triggerList; 
} 


public ArrayList<String> getItemList() 
{ 
    return _itemList; 
} 


public void setItemList(final ArrayList<String> itemList) 
{ 
    _itemList = itemList; 
} 


public ArrayList<String> getBehaviorTreeList() 
{ 
    return _behaviorTreeList; 
} 


public void setBehaviorTreeList(final ArrayList<String> behaviorTreeList) 
{ 
    _behaviorTreeList = behaviorTreeList; 
} 
} 

謝謝, 馬特

+0

這很明顯:'Agent'類中的一個字段需要'int',但是您不發送任何內容或將空字符串作爲參數發送。 – chrylis

+0

我認爲,但Agent類沒有要求和int,它們都是字符串。或字符串列表。 – MattG

+0

是基於你的chrome dev響應數據的id:null還是空的?如果是的話,它可能不得不做點什麼。但不能看到哪裏。 – Jimmy

回答

0

春不處理空方括號。總之,你可以使用

  • ?myArray的[0] = AA & myArray的[1] = BB
  • ?myArray的= AA & myArray的= BB

但不

  • myarray [] = aa & myarray [] = bb

我創建了票https://jira.springsource.org/browse/SPR-11214

+0

它似乎已經支持(至少對於POST請求) –

相關問題