2016-12-10 3 views
1

なぜ整数フィールドは、私が送信した値を取得できませんでした。 WebMethodでIntegerパラメータを単独で使用すると(IDの送信など)、正常に動作します。型の整数フィールドは、Java Webサービスの要求パラメータを解析しません。

また、Stringフィールドは、問題なく送信した値を取得できます。

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

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

TEST型定義:

@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#コンシューマアプリケーション:

... 
test f = new test(); 

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

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

私は私は私の問題を説明したことを願っています。ここ

は、Webサービスです。ありがとう。

答えて

0

@XmlSchemaTypeのマーキングフィールドは私の問題を解決しました。

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

setterをStringに変更してみます。

パブリックvoid setINTPROP(文字列INTPROP){ this.INTPROPString = INTPROP;

次に、文字列を別の関数を使用してintegrerに変更します。 これを整数として返します。これで問題は解決します。ここで

+0

パブリックVoIPではなくプライベート文字列を使用します。 –

+0

これらのクラスが共有されているため、アイデアはありがたいですが文字列フィールドを作成していただきありがとうございます。 – electron

+0

文字列から整数に変換する追加のクラスを作成できますか。その後、値を関数に渡します。私はあなたがStringと整数ではなく、2つのStringを送信していると信じています。あなたは石鹸を投稿できますか? –

0

は別のaproachです:

は、この機能を追加します。 Javaはこれを処理できるはずです。

渡す変数が整数の場合、使用している関数が使用されます。それがStringの場合、この関数は呼び出されます。

public String setINTPROP(String INTPROP) { 
    this.INTPROP = Integer.valueOf(INTPROP); 
関連する問題