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.