我正在接受wicket表单中的日期 - 现在我想查询带有日期的DAO对象并获取过滤器结果。所以问题是如何在模型中传递参数?或者我可以在模型中传递参数吗? 默认情况下,模型调用getObject()方法 - 它不能接受任何参数 - 如果我使用该模型,我无法调用我创建的其他方法(getByDates(startDate,endDate)) 将参数传递给DAO并在前端显示结果的最佳方法是什么? 例如。数据提供者/模型等...
final AbstractReadOnlyModel<List<LogParsed>> listModel = new AbstractReadOnlyModel<List<LogParsed>>()
{
@Override
public List<LogParsed> getObject() {
// TODO Auto-generated method stub
return logParsedDao.findAll();
}
public List<SyslogParsed> getObject(Date startDate, Date endDate) {
// TODO Auto-generated method stub
return logParsedDao.findByDates(startDate, endDate);
}
};
答案 0 :(得分:4)
通常,如果日期不是您的域模型的一部分,而是您在用户界面中需要的项目,那么您可以将它们作为页面,面板或表单的一部分,然后在您的匿名内部类中引用它们: / p>
class MyPage extends Page {
private Date startDate;
private Date endDate;
public MyPage() {
Form form = new Form("form"){ ... submit logic etc ...};
add(form);
form.add(new DateField("startDate", new PropertyModel<Date>(this, "startDate")));
form.add(new DateField("endDate", new PropertyModel<Date>(this, "endDate")));
IModel<List<Item>> itemsModel = new LoadableDetachableModel<List<Item>>(){
@Override
protected List<Item> load() {
return logParseDao.findByDates(startDate, endDate);
}
};
add(new ListView<Item>("items", itemsModel) { ... });
}
}
答案 1 :(得分:1)
使用最终类变量(属性)或最终变量,无论您在范围内(例如在构造函数中):
class MyPage {
final myClassVariable;
MyPage() {
final myMethodVariable;
IModel myModel = new Model() {
getObject() {
// access on myClassVariable and myMethodVariable
}
}
}
}