简体   繁体   中英

Integer field in a type does not parse request parameter in java web service

Why does Integer field couldn't get the value that i sent. If i use Integer parameter by itself (like sending an ID) in WebMethod works fine.

Also the String field can get the value that i sent without any problem.

Here is the web service:

@WebService(serviceName = "testWS")
public class testWS {

    @WebMethod(operationName = "Hello")
    public Integer Hello(@WebParam(name = "testData") TEST testData) {
            return testData.getINTPROP();
    }
}

TEST type definition:

@XmlAccessorType(XmlAccessType.FIELD)
public class TEST {

    private Integer INTPROP;//making public also didn't work

    public Integer getINTPROP() {
        return INTPROP;
    }

    public void setINTPROP(Integer INTPROP) {
        this.INTPROP = INTPROP;
    }

    private String STRINGPROP;

    public String getSTRINGPROP() {
        return STRINGPROP;
    }

    public void setSTRINGPROP(String STRINGPROP) {
        this.STRINGPROP = STRINGPROP;
    }
}

C# consumer application:

...
test f = new test();

f.INTPROP = 123;
f.STRINGPROP = "abcdef";

var ff = ws.Hello(f);//returns 0

I hope i could explained my problem. thanks.

Try to change the setter to String.

public void setINTPROP(String INTPROP) { this.INTPROPString = INTPROP;

Then change the String to an integrer with another function. Return it as an integer, this should solve the problem.

Here is another aproach:

Add this function. Java should be able to handle this.

If the Variable you are passing is a integer, then the function you have will be used. If it is a String, Then this function will be called:

public String setINTPROP(String INTPROP) {
    this.INTPROP = Integer.valueOf(INTPROP);

Ok. Marking field with @XmlSchemaType solved my problem.

@XmlSchemaType(name = "string")
public Integer INTPROP

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM