You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by J2EEKevinLIu Liu <j2...@yahoo.com> on 2007/09/04 03:49:49 UTC
When model updated,why SortableDataProvider.size() sometimes does not perform?
public class SortableUserDataProvider extends SortableDataProvider {
private static final long serialVersionUID = 295668074163742165L;
public SortableUserDataProvider() {
setSort("id", true);
}
public Iterator<UserVO> iterator(int first, int count) {
DetachedCriteria criteria = queryForm.buildCriteria();
if(this.getSort().isAscending()){
criteria.addOrder(Order.asc(this.getSort().getProperty()));
}else{
criteria.addOrder(Order.desc(this.getSort().getProperty()));
}
List<User> users = queryService.list(criteria, first, count);
return convertToVO(users);
}
private Iterator<UserVO> convertToVO(List<User> users) {
ArrayList<UserVO> userVOs = new ArrayList<UserVO>();
for (User user : users) {
if (user != null) {
userVOs.add(new UserVO(user, publicDataService));
}
}
return userVOs.iterator();
}
public int size() {
return queryService.count(queryForm.buildCriteria());//the queryForm has 4 textFields,create query from user's input.
}
public IModel model(Object object) {
return new Model((UserVO) object);
}
}
---------------------------------
Boardwalk for $500? In 2007? Ha!
Play Monopoly Here and Now (it's updated for today's economy) at Yahoo! Games.
Re: When model updated,why SortableDataProvider.size() sometimes does not perform?
Posted by Igor Vaynberg <ig...@gmail.com>.
abstractpageableview caches the size() of the list - which can lead to this.
try with latest trunk, i believe i just fixed it.
-igor
On 9/3/07, J2EEKevinLIu Liu <j2...@yahoo.com> wrote:
>
> public class SortableUserDataProvider extends SortableDataProvider {
> private static final long serialVersionUID = 295668074163742165L;
> public SortableUserDataProvider() {
> setSort("id", true);
> }
> public Iterator<UserVO> iterator(int first, int count) {
> DetachedCriteria criteria = queryForm.buildCriteria();
> if(this.getSort().isAscending()){
> criteria.addOrder(Order.asc(this.getSort().getProperty()));
> }else{
> criteria.addOrder(Order.desc(this.getSort().getProperty()));
> }
> List<User> users = queryService.list(criteria, first, count);
> return convertToVO(users);
> }
> private Iterator<UserVO> convertToVO(List<User> users) {
> ArrayList<UserVO> userVOs = new ArrayList<UserVO>();
> for (User user : users) {
> if (user != null) {
> userVOs.add(new UserVO(user, publicDataService));
> }
> }
> return userVOs.iterator();
> }
> public int size() {
> return queryService.count(queryForm.buildCriteria());//the queryForm
> has 4 textFields,create query from user's input.
> }
> public IModel model(Object object) {
> return new Model((UserVO) object);
> }
> }
>
>
>
>
> ---------------------------------
> Boardwalk for $500? In 2007? Ha!
> Play Monopoly Here and Now (it's updated for today's economy) at Yahoo!
> Games.