【问题标题】:Invalid property 'username' of bean class [java.lang.String]: Bean property 'username' is not readable or has an invalid getter method:bean 类 [java.lang.String] 的无效属性“用户名”:bean 属性“用户名”不可读或具有无效的 getter 方法:
【发布时间】:2016-09-20 14:47:57
【问题描述】:

我在运行 Spring MVC Web 应用程序时遇到以下错误:-

org.springframework.beans.NotReadablePropertyException: bean 类 [java.lang.String] 的无效属性“用户名”:bean 属性“用户名”不可读或具有无效的 getter 方法:返回类型是否为getter 是否匹配 setter 的参数类型?

为什么错误指向像 java.lang.String 这样的 String 类?它应该取自我的 UserForm 对象。

用户窗体:-

package myspring;

/**
 * @author vinod827
 *
 */
public class UserForm {


    private String username;
    private String password;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

}

控制器类(LoginPageController):-

/**
 * 
 */
package myspring;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * @author vinod827
 *
 */
@Controller
@RequestMapping(value = "/login")
public class LoginPageController {

    private final Logger logger = LoggerFactory.getLogger(LoginPageController.class);

    @RequestMapping(method = RequestMethod.GET)
    public String showLoginPage(ModelMap modelMap){
        logger.info("**************");
        UserForm userForm = new UserForm();
        modelMap.addAttribute("userForm", "userForm");
        return "login";
    }


    @RequestMapping(method = RequestMethod.POST)
    public String verifyLogin(UserForm userForm, BindingResult bindingResult, ModelMap modelMap){
        logger.info("********&&&&&&&&&******");
        String username = "username";
        String password = "password";       
        logger.info(username+":"+password);
        userForm = (UserForm) modelMap.get(userForm);       
        modelMap.addAttribute("userForm", userForm);
        return "success";
    }
}

JSP:-

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Sign-In</title>
</head>
<body>
<h3>Secure Sign-in</h3>
<form:form method="post" action="login" commandName="userForm">
   <form:input path="username" type="text"/>
   <form:errors path="username" /><br>
   <form:input path="password" type="password"/>
   <form:errors path="password" /><br><br>
    <form:button  id="submit" name="submit" value="submit">Submit</form:button> 
</form:form>
</body>
</html>

您能告诉我我在哪里犯了错误吗? 我尝试将 UserForm 的类名重构为“User.java”,并在 JSP 上相应地将用户名重命名为用户,但仍然显示相同的错误。

谢谢,

【问题讨论】:

    标签: jsp spring-mvc tomcat8


    【解决方案1】:

    在LoginPageController中,改为

    modelMap.addAttribute("userForm", new UserForm());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      • 2020-11-27
      • 2021-06-16
      相关资源
      最近更新 更多