String
という変数を受け入れるフォームがありますが、の各文字列プロパティが対応する型に変換されるようにClass
インスタンスを生成します。クラスのプロパティ名で識別されます。フォームの入力値を他のJava型に動的に変換してクラスインスタンスを生成するクラス
私がNAME
という名前のフォームに3つのフィールドがある場合、ANNUAL SALARY
とisLocalResident
。このフォームをのインスタンスに変換します。これらのプロパティは、String
,BigInteger
、Boolean
タイプです。
どうすればよいですか?
現在、私はBeanUtil
のプロパティを使用していますが、Javaのプロパティですが、必要な型に変換されないため、自分の要件を満たしません。むしろそれは私に希望のタイプのセッターとゲッタを求めます。 私を助けてください。どんな提案もありがたいですか?
Pこのフォームは動的であることに注意してください。フィールドの数と名前は別の入力に依存することに注意してください。 次のコードは、Employee1
クラスのインスタンスemp1
を生成しています。
public Empolyee1 setContent(List<String> nameList, List<String> valueList) {
Empolyee1 emp1 = new Empolyee1();
for(String attr : nameList) {
if(attr.equalsIgnoreCase("name")) {
if(valueList.get(nameList.indexOf("name")) != null && !valueList.get(nameList.indexOf("name")).trim().equals("")) {
emp1.setName(valueList.get(nameList.indexOf("name")));
}
} else {
if(attr.equalsIgnoreCase("ANNUAL SALARY")) {
if(valueList.get(nameList.indexOf("ANNUAL SALARY")) != null && !valueList.get(nameList.indexOf("ANNUAL SALARY")).trim().equals("")) {
emp1.setAnnualSalary(valueList.get(nameList.indexOf("ANNUAL SALARY")));
}
} else {
if(attr.equalsIgnoreCase("isLocalResident")) {
if(valueList.get(nameList.indexOf("isLocalResident")) != null && !valueList.get(nameList.indexOf("isLocalResident")).trim().equals("")) {
emp1.setIsLocalResident(valueList.get(nameList.indexOf("isLocalResident")));
}
}
}
}
return empl1;
}
動的な属性の数(ダイナミックタイプの)が自動的に変換されたクラスをインスタンス化しますか?属性の数と種類はわかりませんが、属性の全体数と種類は分かりますか?あなたは、(例えば)50の可能な属性を知っていますか?フォーム内のすべての順列で組み合わせることができますか? –
これを参照してください。 http://stackoverflow.com/questions/13868986/dynamically-create-an-object-in-java-from-a-class-name-and-set-class-fields-by-u – Vel
@AndreaLigios、はい私は知っています属性の総数と型。たとえば、合計100個の属性を持つ10の異なるクラスがあります。また、各クラスは異なる数の属性を持つことができます。そして私はgetterとsetterを含む10のクラスのそれぞれに対してxsdを持っています。今、UIから選択したクラスを設定する必要があります。 –