-1

フォームのメインクラスを抽出:

Client k = getClient();
Truster kg = new Truster();
boolean ok = false;

while (!ok) {
    System.out.print("\n name: ");
    //io: is a class for my input from Keyboard

    kg.setName(io.readString()); // <--need the input from here

    //argu_vali is my ValidationClass
    if (argu_vali.analyse(k, "mylist") == 0) {
        ok = true;
    }
}

ok = false;
while (!ok) {
    System.out.print("\n: ");
    kg.setSumme(io.readInteger());
    if (argu_vali.analyse(kg, "sum") == 0) {
        ok = true;
    }
}

k.add_credit(kg);

私のクラス クライアント:

class Client{
     String name;

     @t_list_Check
     private ArrayList <truster> t_list= new ArrayList<>();
}

私のクラスの信頼者:

class Truster{
     String name;

     @Min(0)
     int sum;
}

私自身の t_list の ValidatorClass:

public class t_list_Validator implements ConstraintValidator<t_list_Check, Collection> {

    @Override
    public void initialize(t_list_Check a) {
    }

    @Override
    public boolean isValid(Collection kg_list, ConstraintValidatorContext cvc) {
        Object[] objects = kg_list.toArray();

        if (objects.length < 1) {
            return true;
        }

        String new_name = objects[objects.length-1].toString(); //<---need here the
                                                                //right input from above
        for (Object o : kg_list) {
            if (new_name.equals(o.toString())) {
                return false;
            }
        }
        return true;
    }
}

私の問題は、 の最初の要素の正しい名前を取得することt_listです。kg.setName(io.readString());信頼者 ( )の 2 番目の入力については、実際の要素ではなく、最後の要素から受け取っobjects[objects.length-1].toString()ています。ownValidatort_list

例えば:

  • 1.実行:
  • メインの入力: test1
  • t_list_Validator の値 new_name: test1

...

  • 2.実行:
  • メインの入力: テスト 2
  • value new_name in t_list_Validator: test1 // ここに実際の入力が必要です: "test2"
4

1 に答える 1

0

要素をリストに追加するだけで、問題を解決できます。検証後、リストから削除して検証を続行します....

while (!ok) {
    System.out.print("\n name: ");


    kg.setName(io.readString()); 

    k.add(kg); // add here the element

    if (argu_vali.analyse(k, "mylist") == 0) {
        ok = true;

    }
    k.remove(k.getList().size()-1); //delete the element and go on with validation
}
于 2012-11-28T16:25:54.033 に答える