Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring MVC Form not taking object path

Error shown is Bean property 'emergencyComplaint.emergencyComplaint' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?

The getters and setters have the same return type, still it is showing this error.

JSP Page

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>CRS | Kolkata</title>
    </head>
    <body>
        <div>
            <h1>Lodge an Emergency Complaint Now</h1>
            <form:form action="" method="post" modelAttribute="people">
                <form:label
                    path="emergencyComplaint.emergencyComplaint"
                    for="emergencyComplaint"
                >
                    Emergency Complaint
                </form:label>
                <form:input
                    type="text"
                    name="emergencyComplaint"
                    id="emergencyComplaint"
                    path="emergencyComplaint.emergencyComplaint"
                />

                <form:label
                    path="emergencyComplaint.status"
                    for="emergencyComplaintStatus"
                    >Status</form:label
                >

                <form:input
                    type="text"
                    name="emergencyComplaintStatus"
                    id="emergencyComplaintStatus"
                    path="emergencyComplaint.status"
                ></form:input>

                <form:label path="name" for="name">Name</form:label>
                <form:input path="name" type="text" name="name" id="name" />

                <form:label path="phoneNumber" for="phoneNumber"
                    >Phone Number</form:label
                >
                <form:input
                    path="phoneNumber"
                    type="text"
                    name="phoneNumber"
                    id="phoneNumber"
                />

                <button type="submit">Lodge</button>
            </form:form>
        </div>
    </body>
</html>

Model Class

package com.naha.crimereportingsystem.people;

import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;

import com.naha.crimereportingsystem.emergencyComplaint.EmergencyComplaint;

@Entity
public class People {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;
    private String name;
    private String phoneNumber;

    @OneToMany(targetEntity = EmergencyComplaint.class, cascade = CascadeType.ALL)
    private List<EmergencyComplaint> emergencyComplaint;

    public People() {

    }

    public People(long id, String name, String phoneNumber) {
        this.id = id;
        this.name = name;
        this.phoneNumber = phoneNumber;
        this.emergencyComplaint = (List<EmergencyComplaint>) new EmergencyComplaint();
    }

    public List<EmergencyComplaint> getEmergencyComplaint() {
        return emergencyComplaint;
    }

    public void setEmergencyComplaint(List<EmergencyComplaint> emergencyComplaint) {
        this.emergencyComplaint = emergencyComplaint;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(final String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    public void setName(final String name) {
        this.name = name;
    }

}

Mapped Other Model Class

package com.naha.crimereportingsystem.emergencyComplaint;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class EmergencyComplaint {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    long id;
    private String emergencyComplaint;
    private String status;

    public String getEmergencyComplaint() {
        return emergencyComplaint;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public void setEmergencyComplaint(String emergencyComplaint) {
        this.emergencyComplaint = emergencyComplaint;
    }

    public EmergencyComplaint(long id, String emergencyComplaint, String status) {
        this.id = id;
        this.emergencyComplaint = emergencyComplaint;
        this.status = status;
    }

    public EmergencyComplaint(String emergencyComplaint, String status) {
        this.emergencyComplaint = emergencyComplaint;
        this.status = status;
    }

    public EmergencyComplaint() {
    }

}
like image 707
Hrithik Naha Avatar asked Jul 04 '26 13:07

Hrithik Naha


1 Answers

This is a valid error. Take a close look at your Entity and your modelAttribute. There is no such thing emergencyComplaint.emergencyComplaint.

So, instead of:

<form:input type="text" name="emergencyComplaint" id="emergencyComplaint" path="emergencyComplaint.emergencyComplaint" />

Try this:

<form:input type="text" name="emergencyComplaint" id="emergencyComplaint" path="emergencyComplaint" />

I do not have OneToMany example handy but I think you are smart enough to identify the issue by now while reading this. If not then to get an idea, take a look at this and this.

like image 196
Ajay Kumar Avatar answered Jul 07 '26 06:07

Ajay Kumar



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!