I have a page which allows me to search for registered users to a site.  

The part of the page I have a problem with is as follows, page: showUsers.jsp 
which makes calls to an EJB3 called userFinder


  | <h:commandLink value="S" action="#{userFinder.findFirstPage}"  
styleClass="alpha_list">
  |   <f:param name="start" value="S"/>
  | </h:commandLink>
  | 

Here is the problem.  When I initially hit the showUsers.jsp page and click on 
the link defined above, the page refreshes but nothing happens on the page or 
in the console output.
HOWEVER, if I first search for a user (code not shown) THEN I click the link 
above, then it works and shows me all users starting with the letter S.

It seems like something contexual, but I don't understand why the 
#{userFinder.findFirstPage} action isn't working on the commandLink before I 
search for something.


  | @Name("userFinder")
  | @Stateful
  | @Scope(ScopeType.SESSION)
  | public class UserFinderBean implements UserFinder {
  |     
  |     private User example = new User();
  |     public User getExample() {
  |                     return example;
  |     }
  |     
  |     
  |     private String[] searchColumns;
  |     public String[] getSearchColumns() {
  |             return searchColumns;
  |     }
  |     public void setSearchColumns(String[] searchColumns) {
  |             this.searchColumns = searchColumns;
  |     }
  |     
  |     
  |     private SelectItem[] searchColumnItems = new SelectItem[] {
  |             new SelectItem("username", "Username"),
  |             new SelectItem("firstName", "First"),
  |             new SelectItem("lastName", "Last"),
  |             new SelectItem("company", "Company"),
  |             new SelectItem("email", "Email")
  |     };
  |     public SelectItem[] getSearchColumnItems() {
  |             return searchColumnItems;
  |     }
  |     
  |     private int pageNumber = 0;
  |     private int pageSize = 15;
  |     public void setPageSize(int size) {
  |                     pageSize = size;
  |     }
  |     public int getPageSize() {
  |                     return pageSize;
  |     }
  |     
  |     public boolean isPreviousPage() {
  |                     return userList!=null && pageNumber>0;
  |     }
  |     public boolean isNextPage() {
  |                     return userList!=null && userList.size()==pageSize;
  |     }
  |             
  |     @Logger
  |     private Log log;
  |     
  |     @DataModel
  |     private List<User> userList;
  |     
  |     @DataModelSelection
  |     private User selectedUser;
  |     
  |     @PersistenceContext
  |     private EntityManager entityManager;
  |     
  |     private void executeQuery() {
  |             Map<String, Object> parameters = new HashMap<String, Object>();
  |             StringBuffer queryString = new StringBuffer();
  |             
  |             log.info("searchColumns: " + Arrays.asList(searchColumns));
  |             
  |             
  |             //*******************************************************//
  |             // Handle case when a user clicks on a letter
  |             //*******************************************************//
  |             if(start != null && !start.equals("")) {
  |                     queryString.append(" or user.username" + " like :value 
or user.username like :valuetwo ");
  |                     parameters.put("value", start + "%");
  |                     parameters.put("valuetwo", start.toLowerCase() + "%");
  |             }
  |             
  | 
  | //          if(example.getUsername() != null ) {
  | //                  if(example.getUsername().contains("%")) {
  | //                          queryString.append(" and user.username like 
:username");
  | //                  } else {
  | //                          queryString.append(" and user.username = 
:username");
  | //                  }
  | //                  parameters.put( "username", example.getUsername() );
  | //          }
  |             
  |             if(example.getUsername() != null ) {
  |                     int x = 0;
  |                     for(String searchColumn : searchColumns) {
  |                             if(example.getUsername().contains("%")) {
  |                                     queryString.append(" or user." + 
searchColumn + " like :" + searchColumn);
  |                             } else {
  |                                     queryString.append(" or user." + 
searchColumn + " = :" + searchColumn);
  |                             }
  |                             parameters.put( searchColumn, 
example.getUsername() );
  |                             x++;
  |                     }
  |             }
  | 
  |             if(queryString.length() == 0) {
  |                     queryString.append("select user from User user");
  |             } else {
  |                     queryString.delete(0, 3).insert(0, "select user from 
User user where ");
  |             }
  |             
  |             if(order!=null) {
  |                     queryString.append(" order by user.").append(order);
  |                     if (descending) queryString.append(" desc");
  |             }
  |         
  |                             
  | //                          Properties of a JavaBean can be bound to named 
query parameters:
  | // 
  | //                          Query q = s.createQuery("from foo Foo as foo 
where foo.name=:name and foo.size=:size");
  | //                          q.setProperties(fooBean); // fooBean has 
getName() and getSize()
  | //                          List foos = q.list();
  |                             
  |             log.info("example.username: " + example.getUsername() + " 
queryString: \n\n" + queryString + "\n\n");
  | 
  |             Query query = entityManager.createQuery(queryString.toString());
  |             for (Entry <String, Object> param : parameters.entrySet()) {
  |                             query.setParameter( param.getKey(), 
param.getValue() );
  |             }
  |             userList = (List<User>) query.setMaxResults(pageSize)
  |                                             
.setFirstResult(pageSize*pageNumber)
  |                                             .getResultList();
  |     }
  |     
  |     public String findFirstPage() {
  |                     log.info("Find First Page");
  |                     pageNumber=0;
  |                     executeQuery();
  |                     return null;
  |     }
  |     
  |     public String findNextPage() {
  |         pageNumber++;
  |         executeQuery();
  |         return null;
  |     }
  |     
  |     public String findPreviousPage() {
  |         pageNumber--;
  |         executeQuery();
  |         return null;
  |     }
  |     
  |     public void refresh() {
  |         if (userList!=null) executeQuery();
  |     }
  |     
  |     public String clear() {
  |         userList=null;
  |         example = new User();
  |         return null;
  |     }
  |     
  |     public User getSelection() {
  |         return entityManager.merge( selectedUser );
  |     }
  |         
  |     @Destroy @Remove
  |     public void destroy() {}
  |     
  |     private String order;
  |     private boolean descending = false;
  |     
  |     @RequestParameter
  |     private String orderBy;
  |             
  |             @RequestParameter
  |     private String start;
  | 
  |     public String reorder() {
  |         if (orderBy.equals(order)) {
  |             descending = !descending;
  |         }
  |         else {
  |             descending = false;
  |         }
  |         order = orderBy;
  |         executeQuery();
  |         return null;
  |     }
  | 
  | }
  | 

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

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3962954
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to