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;
}
}
谢谢, 马特
这很明显:'Agent'类中的一个字段需要'int',但是您不发送任何内容或将空字符串作为参数发送。 – chrylis
我认为,但Agent类没有要求和int,它们都是字符串。或字符串列表。 – MattG
是基于你的chrome dev响应数据的id:null还是空的?如果是的话,它可能不得不做点什么。但不能看到哪里。 – Jimmy