データベースのフィールドを更新する SOAP ベースのクライアントを作成しています。java wsimport ユーティリティによって作成されたクラスの 1 つには、保護されたインスタンス変数としてテーブル内の各フィールドを持つテーブルの表現が含まれています。元:
public class CustomObject1Data {
@XmlElement(name = "ModifiedDate")
@XmlSchemaType(name = "dateTime")
protected XMLGregorianCalendar modifiedDate;
@XmlElement(name = "CreatedDate")
@XmlSchemaType(name = "dateTime")
protected XMLGregorianCalendar createdDate;
@XmlElement(name = "ModifiedById")
protected String modifiedById;
@XmlElement(name = "CreatedById")
protected String createdById;
@XmlElement(name = "ModId")
protected Integer modId;
@XmlElement(name = "Id")
protected String id;
@XmlElement(name = "CustomInteger5")
protected Integer customInteger5;
@XmlElement(name = "CustomInteger6")
protected Integer customInteger6;
.... 100+ more
ユーザー インターフェイスでは、これらのフィールドにわかりやすい名前が付けられます。データベース内のそのレコードのフィールド名であるため、彼らがよく知っている名前。バックグラウンドで、UI は UI フィールド名を XML 名にマップします。UI から次のようなクエリ文字列が送信された場合、"CustomInteger5=some new value"
このクラス メンバーを設定するにはどうすればよいでしょうか?
@XmlElement(name = "CustomInteger5")
protected Integer customInteger5;
次のような多数の if ステートメントを使用できることはわかっています。
if(requestStr.fieldName.equals("CustomInteger5"){
setCustomInteger5(rquestStr.value);
}
...
しかし、これは大変な作業になります。XML 名を文字列として指定すると、これらのクラス メンバーを動的に設定できますか?
ありがとうございました。