如何解决“无法识别的字段”问题?

问题描述 投票:0回答:2

这是我的CallTree.java源代码:

public class CallTree {
    public static final int active=1;
    public static final int inactive=0;
    private String contact=new String();
    private String division=new String();
    private String systemName=new String();
    private String location=new String();
    private String serviceLevel=new String();
    private String missionCritical=new String();
    private String timeToStartProcedure=new String();
    private String callTree=new String();
    private String timeToEscalate=new String();
    private String logRecipients=new String();
    private int status=CallTree.inactive;   
    private int callTreeId;
    private float version=0.0f;

    private Manual[] manuals;


    public CallTree() {

    }

    public String getContact() {
        return contact;
    }

    public void setContact(String contact) {
        this.contact = contact;
    }

    public int getCallTreeId() {
        return callTreeId;
    }

    public void setCallTreeId(int callTreeId) {
        this.callTreeId = callTreeId;
    }
    public String getDivision() {
        return division;
    }

    public void setDivision(String division) {
        this.division = division;
    }

    public String getSystemName() {
        return systemName;
    }

    public void setSystemName(String systemName) {
        this.systemName = systemName;
    }

    public String getLocation() {
        return location;
    }

    public void setLocation(String location) {
        this.location = location;
    }

    public String getServiceLevel() {
        return serviceLevel;
    }

    public void setServiceLevel(String serviceLevel) {
        this.serviceLevel = serviceLevel;
    }

    public String getMissionCritical() {
        return missionCritical;
    }

    public void setMissionCritical(String missionCritical) {
        this.missionCritical = missionCritical;
    }

    public String getTimeToStartProcedure() {
        return timeToStartProcedure;
    }

    public void setTimeToStartProcedure(String timeToStartProcedure) {
        this.timeToStartProcedure = timeToStartProcedure;
    }

    public String getCallTree() {
        return callTree;
    }

    public void setCallTree(String callTree) {
        this.callTree = callTree;
    }

    public String getTimeToEscalate() {
        return timeToEscalate;
    }

    public void setTimeToEscalate(String timeToEscalate) {
        this.timeToEscalate = timeToEscalate;
    }

    public String getLogRecipients() {
        return logRecipients;
    }

    public void setLogRecipients(String logRecipients) {
        this.logRecipients = logRecipients;
    }

    public int getStatus() {
        return status;
    }

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

    public Manual[] getManuals() {
        return manuals;
    }

    public void setManuals(Manual[] manuals) {
        this.manuals = manuals;
    }
    public float getVersion() {
        return version;
    }
    public void setVersion(float version) {
        this.version = version;
    }   
}

这是我的CallTreeForm.java源代码:

    public class CallTreeForm extends CallTree {
        private boolean isNewContact;
        private int contactId;
        private String contact;

        public CallTreeForm() {

        }
        public boolean isNewContact() {
            return isNewContact;
        }
        public void setNewContact(boolean isNewContact) {
            this.isNewContact = isNewContact;
        }
        public String getContact() {
            return contact;
        }
        public void setContact(String contact) {
            this.contact = contact;
        }
        public int getContactId() {
            return contactId;
        }
        public void setContactId(int contactId) {
            this.contactId = contactId;
        }
    }

我将以下JSON数据提交给Restful Service。

{
    "division": "A1",
    "systemName": "vdf",
    "location": "dsf",
    "serviceLevel": "2",
    "missionCritical": "M",
    "timeToStartProcedure": "fd",
    "timeToEscalate": "df",
    "logRecipients": "sd@com",
    "status": 0,
    "isNewContact": true,
    "contact": "<p><span style=\"color:#2ecc71\">sdfd</span>f<span style=\"color:#c0392b\">dsfdsfsd</span></p>\n"
}

我从浏览器中收到以下错误消息。

Unrecognized field "isNewContact" (class com.calltree.CallTreeForm), not marked as ignorable (16 known properties: "contact", "missionCritical", "division", "serviceLevel", "status", "location", "callTreeId", "version", "timeToStartProcedure", "systemName", "contactId", "callTree", "logRecipients", "newContact", "manuals", "timeToEscalate"])
 at [Source: (org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream); line: 1, column: 200] (through reference chain: com.calltree.CallTreeForm["isNewContact"])

如何解决“无法识别的字段”问题?

java rest jersey
2个回答
2
投票

您的isNewContact及其相关的getter / setter不遵循标准的Java bean命名。

由于该属性被命名为isNewContact,因此,预计该getter为isIsNewContract,而该setter为setIsNewContract

但是这听起来很错误,因为isNewContact显然是吸气剂的名称。所以我将名称更改为:

private boolean newContact; //property
public boolean isNewContract(){return this.newContract;}
public void setNewContract(boolean newContract){this.newContract = newContract;}

和JSON:

"newContact": true,

0
投票

您的设置者未遵循set [大写字段名称]的约定:

public void setIsNewContact(boolean isNewContact) {
© www.soinside.com 2019 - 2024. All rights reserved.