当前位置: 首页 > 知识库问答 >
问题:

无法将类型'java.lang.String'的值转换为所需的类型'int';对于输入字符串:"保存"

年文柏
2023-03-14

**正在解决来自处理程序的异常[com.controller.EmpController@77cb027f]:org.springframework.beans。TypeMismatchException:无法将“java.lang.String”类型的值转换为所需的“int”类型;嵌套异常为java.lang.NumberFormatException:对于输入字符串:“save”**

这是控制器部分

 @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);
    }

}

这是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" />

这是.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>

共有3个答案

况唯
2023-03-14

我遇到了同样的问题,但对我来说解决方案很简单:在下面的代码中,当我用histo.push更新历史记录时,我忘记了第一个/in /admin /产品;

我的代码:

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!');
    })
}
洪飞白
2023-03-14

我也有同样的问题,Plog关于拥有数字路线图的说法是正确的。

但是,您可以将其更改为/{id:\\d},而不是将“/{id}”更改为“/某物/{id}”,然后它将与“/sav”不匹配。

我对所有“/id”情况都使用数字正则表达式,这样我就不会有这个问题。例如“/user/25”和“/user/forgot password”。

越俊驰
2023-03-14

在我看来,您可能对资源有一个类似“/{id}”之类的@RequestMapping,当您尝试点击“/save”资源而不是将其映射到您在问题中显示的控制器方法时,它试图将单词“save”解析为资源“/{id}”的整数ID。

要解决这个问题,您应该将以前的资源映射从“/{id}”重命名为带有合适前缀“/something/{id}”的名称。

 类似资料:
  • 你好,我正在用JavaSpring Boot做一个“CRUD网络应用程序”,我正试图将我的“CRUD网络应用程序”按钮功能从一个新页面更改为一个模态,我遇到了问题。 首先,当我单击“编辑”按钮时,我的表单没有填充它从数据库获得的数据,第二,当我单击“保存”时,它会向我显示此消息。 无法转换“java”类型的值。lang.String'转换为所需类型“long”;嵌套的异常是java。lang.Nu

  • 我正试图通过提供JSON格式的所需请求来使用postman来访问一个服务: 邮递员屏幕 但我得到了一个错误: “无法将类型”java.lang.String“的值转换为所需的类型”SampleRequestObject“;嵌套异常为java.lang.IllegalStateException:无法将类型[java.lang.String]的值转换为所需类型“ 控制器 SampleRequestO

  • 这是控制器代码部分: 我收到这条消息: 出现错误(类型=错误请求,状态=400)。无法将类型[java.lang.String]的值转换为所需类型[java.util.Date];嵌套异常为org.springframework.core.convert.conversionfailedexception:无法将值“Wed Jun 08 00:00:00 WET 2016”从类型[java.lan

  • 我有两个实体,它们使用一个主键互相引用,主键是一个实体的整数。我不确定我做这件事的方式是否正确。 下面是引用主键id为int的实体 下面是我们从上面的实体中将外键设置为Kmichango kandaMchango的实体。 这里是表单的一部分,我在这里提交了用户在jumuiya_michango_form.html中提供的数据 下面是我的控制器中用于链接到表单和发布数据的两个方法 在我提交表单后,我

  • 您好,我正在使用Spring 4.1.1.RELEASE开发一个web应用程序。所有的Spring配置都是通过注释完成的,除了一点之外,它运行得很好: > 我在项目中有一个包含这些行的config.properties文件 我有一个配置类 和另一个类 属性“filter”的值已成功从属性资源中注入。但是我在属性“计数”上得到了一个例外: 当我将属性“count”的类型更改为String时,它开始工

  • 我正在关注Spring in Action 5,在按下提交按钮后创建Taco模型时遇到问题。这是我的设计Taco控制器类: 以及我捕获的错误消息: 炸玉米饼实体如下所示: 以及我的配料实体: 这是一个html页面,必须使用所选成分创建新的Taco对象: 我该怎么修理它?谢谢你的预付款。