[jboss-user] [JBoss Seam] - Re: HowTo: When going to a page to enter data, pull from db

christian.bauer@jboss.com do-not-reply at jboss.com
Sun Apr 22 02:57:01 EDT 2007


"CptnKirk" wrote : 
  | For example I don't think I'd recommend using a Home to populate a search prototype.  For search pages, an entity with an event scoped role combined with Hibernate's Criteria API + Example criterion is great.
  | 

I prefer exactly the opposite, with a Search conversation scoped component that holds my prototype entity during the search conversation. Gives me a lot of control over what the user can select on the search screen and how I handle this in the backend:


  | @Name("userSearch")
  | @Scope(ScopeType.CONVERSATION)
  | public class UserSearch implements Serializable {
  | 
  |     @In
  |     private UserDAO userDAO;
  | 
  |     @In
  |     private FacesMessages facesMessages;
  | 
  |     private User exampleUser;
  |     private String orderByProperty;
  |     private boolean orderDescending;
  |     private String[] ignoreProperties;
  |     private int rowCount;
  |     private int maxPageSize;
  |     private int pageSize;
  |     private int page;
  | 
  |     @DataModel
  |     private List<User> usersList;
  | 
  |     @Create
  |     public void initialize() {
  |         pageSize = 15;
  |         maxPageSize = 1000;
  |         exampleUser = new User();
  |         orderByProperty = "username";
  |         orderDescending = false;
  |         ignoreProperties = new String[]{"passwordHash", "activated", "createdOn"};
  |     }
  | 
  |     public void find() {
  |         page = 0;
  |         queryRowCount();
  |         if (rowCount != 0) queryUsers();
  |     }
  | 
  |     public void nextPage() {
  |         page++;
  |         queryUsers();
  |     }
  | 
  |     public void previousPage() {
  |         page--;
  |         queryUsers();
  |     }
  | 
  |     public void firstPage() {
  |         page = 0;
  |         queryUsers();
  |     }
  | 
  |     public void lastPage() {
  |         page = (rowCount / pageSize);
  |         if (rowCount % pageSize == 0) page--;
  |         queryUsers();
  |     }
  | 
  |     private void queryRowCount() {
  |         rowCount = userDAO.getRowCountByExample(exampleUser, ignoreProperties);
  |         if (rowCount == 0) {
  |             facesMessages.addFromResourceBundleOrDefault(
  |                 FacesMessage.SEVERITY_INFO,
  |                 "noUserFound",
  |                 "No user with given attributes was found, please try again."
  |             );
  |         }
  |     }
  | 
  |     private void queryUsers() {
  |         usersList = userDAO.findByExample(exampleUser, orderByProperty, orderDescending, page * pageSize, pageSize, ignoreProperties);
  |     }
  | 
  |     public boolean isNextPageAvailable() {
  |         return usersList != null && rowCount > ((page * pageSize) + pageSize);
  |     }
  | 
  |     public boolean isPreviousPageAvailable() {
  |         return usersList != null && page > 0;
  |     }
  |     public int getPageSize() {
  |         return pageSize;
  |     }
  | 
  |     public void setPageSize(int pageSize) {
  |         this.pageSize = pageSize > maxPageSize ? maxPageSize : pageSize; // Prevent tampering
  |     }
  | 
  |     public int getRowCount() {
  |         return rowCount;
  |     }
  | 
  |     public User getExampleUser() {
  |         return exampleUser;
  |     }
  | 
  |     public void setExampleUser(User exampleUser) {
  |         this.exampleUser = exampleUser;
  |     }
  | 
  |     public String getOrderByProperty() {
  |         return orderByProperty;
  |     }
  | 
  |     public boolean isOrderDescending() {
  |         return orderDescending;
  |     }
  | 
  |     public void sortBy(String propertyName) {
  |         orderByProperty = propertyName;
  |         orderDescending = !isOrderDescending(); // Switch between ASC and DESC
  |         page = 0; // Reset to first page
  |         queryUsers();
  |     }
  | 
  | }
  | 

And the UI is bound to userSearch.exampleUser and the various other properties and methods for pagination etc.


View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4039586#4039586

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4039586



More information about the jboss-user mailing list