Spring 无法转换类型为';java.lang.String';至所需类型';int';;对于输入字符串:";“保存”;
**正在解析处理程序[com.controller]中的异常。EmpController@77cb027f]:org.springframework.beans.typemischException:未能将“java.lang.String”类型的值转换为所需的类型“int”;嵌套异常为java.lang.NumberFormatException:对于输入字符串:“save” ** 这是控制器部件Spring 无法转换类型为';java.lang.String';至所需类型';int';;对于输入字符串:";“保存”;,spring,hibernate,Spring,Hibernate,**正在解析处理程序[com.controller]中的异常。EmpController@77cb027f]:org.springframework.beans.typemischException:未能将“java.lang.String”类型的值转换为所需的类型“int”;嵌套异常为java.lang.NumberFormatException:对于输入字符串:“save” ** 这是控制器部件 @Controller public class EmpController { p
@Controller
public class EmpController {
private static final Logger logger = Logger
.getLogger(EmpController.class);
public EmpController() {
System.out.println("EmpController()");
}
@Autowired
private EmpService service;
@Autowired
private UserService userservice;
public UserService getUserservice() {
return userservice;
}
public void setUserservice(UserService userservice) {
this.userservice = userservice;
}
public EmpService getService() {
return service;
}
public void setService(EmpService service) {
this.service = service;
}
@RequestMapping(value="login", method= RequestMethod.GET)
public ModelAndView showlogin(HttpServletRequest request, HttpServletResponse response) {
ModelAndView mav= new ModelAndView("login");
mav.addObject("login", new User() );
return mav;
}
@RequestMapping(value="loginProcess", method= RequestMethod.POST)
public ModelAndView loginProcess(HttpServletRequest request, HttpServletResponse response,
Model model,@ModelAttribute("login") User user) {
ModelAndView mav = null;
boolean user1 = userservice.validateUser(user);
if(false != user1) {
List<Emp> list = service.getAllEmployees();
model.addAttribute("list", list);
mav= new ModelAndView("empform","command",new Emp());
mav.addObject("userId", user.getUserId());
} else {
mav= new ModelAndView("login");
mav.addObject("message","UserId and Password is wrong");
}
return mav;
}
@RequestMapping(value="/empform", method= RequestMethod.GET)
public ModelAndView showform(Model model,@ModelAttribute("emp") Emp emp) throws IOException {
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
List<Emp> list = service.getAllEmployees();
model.addAttribute("list", list);
return new ModelAndView("empform","command",new Emp());
}
/* @RequestMapping(value="/newEmp", method= RequestMethod.GET)
public ModelAndView newContact(ModelAndView model) {
Emp emp = new Emp();
model.addObject("emp", emp);
model.setViewName("empform");
return model;
} */
@RequestMapping(value = "/save", method = RequestMethod.POST)
public ModelAndView saveEmployee(@ModelAttribute Emp emp,Model model) {
System.out.println(">>>>welcome to save>>>>>");
if (emp.getEmpId() == 0) {
service.save(emp);
} else {
service.update(emp);
}
List<Emp> list = service.getAllEmployees();
model.addAttribute("list", list);
return new ModelAndView("redirect:/empform");
}
@RequestMapping(value="/delete/{empId}", method= RequestMethod.GET)
public ModelAndView delete(Model model,@PathVariable int empId) {
service.delete(empId);
List<Emp> list = service.getAllEmployees();
model.addAttribute("list", list);
return new ModelAndView("redirect:/empform");
}
@RequestMapping(value="/edit/{empId}")
public ModelAndView edit(Model model,@PathVariable int empId) {
System.out.println(">>>>>>>>>>>edit");
Emp emp= service.getEmpById(empId);
System.out.println(">>>>>>>>> continue edit>>>>");
return new ModelAndView("empform","command", emp);
}
@控制器
公共类控制器{
专用静态最终记录器=记录器
.getLogger(EmpController.class);
公共环境管理主任(){
System.out.println(“EmpController()”);
}
@自动连线
私营企业管理服务;
@自动连线
私人用户服务;
公共用户服务getUserservice(){
返回用户服务;
}
public void setUserservice(UserService UserService){
this.userservice=userservice;
}
公共服务{
回程服务;
}
公共无效设置服务(EmpService服务){
服务=服务;
}
@RequestMapping(value=“login”,method=RequestMethod.GET)
公共模型和视图显示登录(HttpServletRequest请求、HttpServletResponse响应){
ModelAndView mav=新ModelAndView(“登录”);
addObject(“login”,new User());
返回mav;
}
@RequestMapping(value=“loginProcess”,method=RequestMethod.POST)
公共模型和视图登录过程(HttpServletRequest请求、HttpServletResponse响应、,
模型,@modeldattribute(“登录”)用户){
ModelAndView mav=null;
布尔user1=userservice.validateUser(用户);
if(false!=user1){
List=service.getAllEmployees();
model.addAttribute(“列表”,列表);
mav=newmodelandview(“empform”,“command”,newemp());
mav.addObject(“userId”,user.getUserId());
}否则{
mav=新模型和视图(“登录”);
mav.addObject(“消息”、“用户ID和密码错误”);
}
返回mav;
}
@RequestMapping(value=“/empform”,method=RequestMethod.GET)
公共模型和视图显示表单(模型模型,@modeldattribute(“emp”)emp emp)引发IOException{
System.out.println(“>>>>>>>>>>>>>>>>>>>>>>”;
List=service.getAllEmployees();
model.addAttribute(“列表”,列表);
返回新的ModelAndView(“empform”,“command”,newemp());
}
/*@RequestMapping(value=“/newEmp”,method=RequestMethod.GET)
公共模型和视图新联系人(模型和视图模型){
Emp Emp=新的Emp();
addObject(“emp”,emp);
model.setViewName(“empform”);
收益模型;
} */
@RequestMapping(value=“/save”,method=RequestMethod.POST)
public Model和view saveEmployee(@modeldattribute Emp Emp,Model Model){
System.out.println(“>>>>欢迎保存>>>>”;
if(emp.getEmpId()==0){
服务保存(emp);
}否则{
服务更新(emp);
}
List=service.getAllEmployees();
model.addAttribute(“列表”,列表);
返回新的ModelAndView(“重定向:/empform”);
}
@RequestMapping(value=“/delete/{empId}”,method=RequestMethod.GET)
公共模型和视图删除(模型模型,@PathVariable int-empId){
删除(empId);
List=service.getAllEmployees();
model.addAttribute(“列表”,列表);
返回新的ModelAndView(“重定向:/empform”);
}
@请求映射(value=“/edit/{empId}”)
公共模型和视图编辑(模型模型,@PathVariable int-empId){
System.out.println(“>>>>>>>>>编辑”);
Emp Emp=service.getEmpById(empId);
System.out.println(“>>>>>>>继续编辑>>>”;
返回新的ModelAndView(“empform”、“command”、emp);
}
}
这是spring srvlet.xml
<context:component-scan base-package="com.controller">
</context:component-scan>
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://10.125.129.252:3306/nehaempdb">
</property>
<property name="username" value="root"></property>
<property name="password" value="admin"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<prop
key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="packagesToScan" value="com.model"></property>
</bean>
<bean id="service" class="com.service.EmpService">
</bean>
<bean id="userservice" class="com.service.UserService">
</bean>
<bean id="dao" class="com.dao.EmpDao">
</bean>
<bean id="userdao" class="com.dao.UserDao">
</bean>
<!-- Transaction -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
org.hibernate.dialogue.mysqldialogue
更新
真的
真的
这是.jsp
<div align="center">
<h1>New/Edit Employee</h1>
<form:form action="save" method="post" >
<table>
<form:hidden path="empId"/>
<tr>
<td>Name:</td>
<td><form:input path="empName" /></td>
</tr>
<tr>
<td>Salary:</td>
<td><form:input path="salary" /></td>
</tr>
<tr>
<td>DeptId:</td>
<td><form:input path="deptId" /></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="Save"></td>
</tr>
</table>
</form:form>
</div>
value="Save"></td>
</tr>
</table>
</form:form>
</div>
新建/编辑员工
姓名:
薪金:
新闻部:
value=“Save”>
在我看来,您可能有一个@RequestMapping到一个类似“/{id}”的资源,当您试图点击“/save”资源而不是将其映射到您在问题中显示的控制器方法时,它试图将“save”一词解析为资源“/{id}”的整数id
要解决此问题,您应该将以前的资源映射从“/{id}”重命名为带有合适前缀“/something/{id}”的某个对象。我觉得您可能有一个@RequestMapping到“/{id}”之类的资源,并且在尝试点击“/save”时“资源,而不是将其映射到您在问题中显示的控制器方法,它试图将单词“save”解析为资源“/{id}”的整数id。”
要解决此问题,您应该将以前的资源映射从“/{id}”重命名为具有适当前缀“/something/{id}”的对象。我也遇到了同样的问题,而Plog拥有数字路由映射是正确的 但是,您可以将“/{id}”更改为“/{id}”,而不是将其更改为“/{id:\\d+}”,然后它将与“/save”不匹配
我在所有“/id”情况下都使用数字正则表达式,这样我就不会有这个问题。例如“/users/25”和“/users/forgotpassword”。我也有同样的问题,Plog使用数字路线图是正确的 怎么
useEffect(() => {
if (isEditing) {
makeRequest({ url: `/products/${productId}` })
.then(response => {
setValue('name', response.data.name);
setValue('price', response.data.price);
setValue('description', response.data.description);
setValue('imgUrl', response.data.imgUrl);
})
}
}, [productId, isEditing, setValue]);
const onSubmit = (data: FormState) => {
makePrivateRequest({
url: isEditing ? `/products/${productId}` : '/products',
method: isEditing ? 'PUT' : 'POST',
data
})
.then(() => {
toast.info('Produto salvo com sucesso!');
history.push('/admin/products');
})
.catch(() => {
toast.error('Erro ao salvar produto!');
})
}