【发布时间】:2012-11-09 15:55:03
【问题描述】:
提取表单主类:
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());) 的第二个输入,我在 ownValidator 中收到来自 objects[objects.length-1].toString() 的只是来自 t_list 的最后一个元素,而不是实际元素。
例如:
- 1.运行:
- main 中的输入:test1
- t_list_Validator 中的值 new_name:test1
...
- 2.运行:
- main 中的输入:测试 2
- value new_name in t_list_Validator: test1 // 此处需要实际输入:“test2”
【问题讨论】:
标签: java list object input annotations