Java 从wicket中的列表模型制作项目模型
Wicket版本:6.14 我有一个Java 从wicket中的列表模型制作项目模型,java,list,wicket,Java,List,Wicket,Wicket版本:6.14 我有一个 LoadableDetachableModel<List<Foo>> LoadableDetachableModel 我试图将模型与向导一起使用,但向导的每一页都将使用列表中的一项 我想获得列表中每个屏幕的模型,并在向导的每个屏幕之间更改模型 理想情况下,我可以这样做: PropertyModel<Foo> fooItemModel = new PropertyModel<Foo>(fooItems, "g
LoadableDetachableModel<List<Foo>>
LoadableDetachableModel
我试图将模型与向导一起使用,但向导的每一页都将使用列表中的一项
我想获得列表中每个屏幕的模型,并在向导的每个屏幕之间更改模型
理想情况下,我可以这样做:
PropertyModel<Foo> fooItemModel = new PropertyModel<Foo>(fooItems, "get(0)");
PropertyModel fooItemModel=新的PropertyModel(fooItems,“获取(0)”);
我还有一个想法,就是滚动我自己的ListItemModel,让它花上一段时间
IModel<List<?>>
IModel向导库已经存在,它比编写自己的向导库更容易实现。您应该看看Wicket的内置组件(带有源代码的示例),或者 我通过使自己的模型类似于ListItemModel并使用页面索引来确定从主模型中提取哪个模型,从而解决了这个问题
public class ElementModel<T> implements IModel<T>
{
private static final long serialVersionUID = 1L;
/** The list model */
private IModel<List<T>> listModel;
/** The list item's index */
private final int index;
/**
* Construct
*
* @param listModel
* The list model
* @param index
* The index of this model
*/
public ElementModel(final IModel<List<T>> listModel, final int index)
{
this.listModel = listModel;
this.index = index;
}
/**
* @see org.apache.wicket.model.IModel#getObject()
*/
@Override
public T getObject()
{
return listModel.getObject().get(index);
}
/**
* @see org.apache.wicket.model.IModel#setObject(java.lang.Object)
*/
@Override
public void setObject(T object)
{
listModel.getObject().set(index, object);
}
/**
* @see org.apache.wicket.model.IDetachable#detach()
*/
@Override
public void detach()
{
// Do nothing.
}
}
public类ElementModel实现IModel
{
私有静态最终长serialVersionUID=1L;
/**列表模型*/
私有IModel列表模型;
/**列表项的索引*/
私有最终整数指数;
/**
*构造
*
*@param listModel
*列表模型
*@param索引
*该模型的索引
*/
公共元素模型(最终IModel列表模型、最终int索引)
{
this.listModel=listModel;
这个指数=指数;
}
/**
*@see org.apache.wicket.model.IModel#getObject()
*/
@凌驾
公共T getObject()
{
返回listModel.getObject().get(索引);
}
/**
*@see org.apache.wicket.model.IModel#setObject(java.lang.Object)
*/
@凌驾
公共无效集合对象(T对象)
{
listModel.getObject().set(索引,对象);
}
/**
*@see org.apache.wicket.model.IDetachable#detach()
*/
@凌驾
公共图书馆
{
//什么也不做。
}
}
您想在列表中添加什么?只是简单的字符串、数字或对象?如果它们是对象,它们是否可以序列化?向导中的步骤数取决于我从数据库中检索的项目数,因此它是动态的。每个页面代表我模型中的一个项目,因此我需要一种方法来为向导中的单个步骤提取该项目。我在下面创建的ElementModel工作得非常好。我不是在尝试编写我自己的,而是在使用wicket的向导库“org.apache.wicket.extensions.wizard.wizard”
public class ElementModel<T> implements IModel<T>
{
private static final long serialVersionUID = 1L;
/** The list model */
private IModel<List<T>> listModel;
/** The list item's index */
private final int index;
/**
* Construct
*
* @param listModel
* The list model
* @param index
* The index of this model
*/
public ElementModel(final IModel<List<T>> listModel, final int index)
{
this.listModel = listModel;
this.index = index;
}
/**
* @see org.apache.wicket.model.IModel#getObject()
*/
@Override
public T getObject()
{
return listModel.getObject().get(index);
}
/**
* @see org.apache.wicket.model.IModel#setObject(java.lang.Object)
*/
@Override
public void setObject(T object)
{
listModel.getObject().set(index, object);
}
/**
* @see org.apache.wicket.model.IDetachable#detach()
*/
@Override
public void detach()
{
// Do nothing.
}
}