gpt4 book ai didi

java - 将新对象附加到 Wicket 中的自定义 validator

转载 作者:行者123 更新时间:2023-12-01 12:12:41 26 4
gpt4 key购买 nike

我有这样的自定义 validator :

public class PeriodClosedValidator implements IValidator<Date>{

private Date dateStart;
private Date dateEnd;

public PeriodClosedValidator(Date dateStart, Date dateEnd) {
this.dateStart = dateStart;
this.dateEnd = dateEnd;
}

public void validate(IValidatable<Date> iv) {

DateFormat sdf = new SimpleDateFormat("dd.MM.yy");

DimCalendarDAO dimCalendarDao = new DimCalendarDAO(DimCalendar.class, HibernateUtil.getSessionFactory());
List<DimCalendar> list = dimCalendarDao.getOpenedOperDates(dateStart, dateEnd);
StringBuilder errorMessage = new StringBuilder();
int counter = 10;

for (DimCalendar cal : list) {
errorMessage.append(',');
if (counter == 0) {
errorMessage.append('\n');
counter = 10;
}
errorMessage.append(sdf.format(cal.getDt()));
counter--;
}
if (errorMessage.length() != 0) {
ValidationError valError = new ValidationError();
valError.addKey("error.close.date.period");
valError.setVariable("dates", errorMessage.substring(1));
iv.error(valError);
}
}
}

我在其中检查关闭营业日期。 (是否有该时期的一些信息)。然后我有一个表单,我在其中附加了 validator :

public class Frm_2_11A extends BasePage{

private DimPeriod periodPtr;
private DimRegion regionPtr;

private final List<DimPeriod> periodList;
private final List<DimRegion> regionList;

private IModel<DimPeriod> periodModel = new PropertyModel<DimPeriod>(this, "periodPtr");
private IModel<DimRegion> regionModel = new PropertyModel<DimRegion>(this, "regionPtr");

public Frm_2_11A() {
super();

periodList = // get list of period;
regionList = // get list of region;

periodModel.setObject(new DimPeriod());

DropDownChoice period = new DropDownChoice("period", periodModel, periodList, new ChoiceRenderer<DimPeriod>("periodName", "id"));
period.setRequired(true);
period.add(new PeriodClosedValidator(periodModel.getObject().getPeriodStart(), periodModel.getObject().getPeriodEnd()));

DropDownChoice region = new DropDownChoice("region", regionModel, regionList, new ChoiceRenderer<DimRegion>("name", "code"));
region.setRequired(true);

Form form = new Form("frm_2_11A"){
//do something if OK
};
form.add(period);
form.add(region);
add(new FeedbackPanel("feedback"));
add(form);
}

}

问题是,PeriodClosedValidator 总是在代码 periodModel.setObject(new DimPeriod()); 中只采用一个对象。如何附加到自定义 validator 新选择的对象?

更新我如何制作自定义 validator ?我想创建类似的东西:

DropDownChoice period = new DropDownChoice("period", periodModel, periodList, new ChoiceRenderer<DimPeriod>("periodName", "id"));
period.add(new MyCustomValidator(param1, param2));

其中 param1param2 是我想要验证的一些日期。

最佳答案

由于您的表单有一个提供 DimPeriod 的选择器,因此您需要为此创建一个 validator 。

您的 validator 类应该类似于:

public class DimPeriodValidator implements IValidator<DimPeriod> {
@Override
public void validate(IValidatable<DimPeriod> validatable) {
//Validation logic here
}
}

我跳过了尝试实际编写验证的地方。它可能与您所得到的类似,但从 validatable 参数内的 DimPeriod 对象获取日期。

关于java - 将新对象附加到 Wicket 中的自定义 validator ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27190125/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com