[ 
https://issues.apache.org/struts/browse/WW-3280?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=46911#action_46911
 ] 

Vaideesh Natarajan commented on WW-3280:
----------------------------------------

Hi .. Thanks for such a quick reply. I found the issue, the issue is in the 
initialization. I just have a question now and would really appreciate a reply. 
My username field has close to 9000 records and when the page is loading I was 
not querying the database in my auto method in my Action class and returning 
just an empty hashmap, turns out that is the problem. It is designed such that 
unless I do a select all query while loading the page from the database and 
each time I type in anything in the field I won't get my desired output. Isn't 
this a performance hassle? 

I have impletemented it the autocompleter as below, please answer my concern 
about the performance. If say the number of users go upto 100000 in a few 
months, wouldn't that be a major performance hassle, if the only way to make 
this work is to do a select all query each time I key in anything in my user 
name field? If there is any work around, please let me know. Thanks in advance 
for your help!

JSP Page
========
<s:url id="iauJSON" 
value="/atp/projects/ItemMasterEntityAttribute/auto.action?fldType=iau"/> 

<s:autocompleter theme="ajax" href="%{iauJSON}" name="userName" 
   keyName="userId" loadOnTextChange="true" autoComplete="true" 
   loadMinimumCount="1" showDownArrow="false" dropdownHeight="100" size="17" 
   cssClass="input" cssStyle="position: relative;top: 1; height:17px;"/> 

Action Class
==========
public String auto() throws Exception {                 
try {
         Map<String,String> json = null;
         String fildType = req.getParameter("fldType");
         String likeChar="dontfindanything";
         if("iau".equals(fildType)){
             if(StringUtils.isEmpty(userName)){
                           likeChar="dontfindanything";
              }else{
                      likeChar=userName;
              }
         }
         json = personDao.getPersonAutoComplete(likeChar);
         JSONObject results = new JSONObject(json);
         req.setAttribute(AUTO_REQUEST_KEY, results.toString());
      } catch (Exception exc) {
           exc.printStackTrace();
      }
      return Forwards.AUTO;
}
DAO Class
=========
public Map<String,String> getPersonAutoComplete(String likeChar)throws 
DaoException {
        Map<String,String> json = new HashMap<String,String>();
        String query ="select user_id , user_name from users where user_name 
like '"+likeChar+"%' order by user_name ";
        if("dontfindanything".equals(likeChar))
                return json;
        if("*".equals(likeChar))
                query ="select person_id as value, user_name as label from 
person order by user_name ";
        Session sess = getHibernateSession();
        try {
                List<Object[]> list = sess.createSQLQuery( query ).list();
                if ((list != null) && (list.size() > 0)) {
                        for (Object[] obj : list) {
                                if(obj!=null){
                                        
json.put(obj[0]==null?"":(String)(obj[0]+""), obj[1]==null?"":(String)obj[1]);
                                }                                       
                        }
                }
        } finally {
                closeHibernateSession();
        }
        return json;
}

> Similar issue with loadMinimumCount="1"
> ---------------------------------------
>
>                 Key: WW-3280
>                 URL: https://issues.apache.org/struts/browse/WW-3280
>             Project: Struts 2
>          Issue Type: Sub-task
>    Affects Versions: 2.0.14
>         Environment: OS : Windows Vista Home Basic
> IE 8.0.6001.18813IC
> Struts 2.0.14
>            Reporter: Vaideesh Natarajan
>            Assignee: Musachy Barroso
>            Priority: Critical
>
> I am using the autocompleter as below
> <s:url id="iauJSON" 
> value="/atp/projects/ItemMasterEntityAttribute/auto.action?fldType=iau"/>
> <s:autocompleter theme="ajax" href="%{iauJSON}" name="userName"
>    keyName="userId" loadOnTextChange="true" autoComplete="true" 
>    loadMinimumCount="1" showDownArrow="false"  dropdownHeight="100" size="17" 
>    cssClass="input" cssStyle="position: relative;top: 1; height:17px;"/>
> when I press a letter say 'a', I don't see anything even though 
> loadMinimumCount is set to 1, then if I press <backspace> and press 'a' 
> again, it works fine, same thing happens for all the letters. if I press 2 
> letters say 'al' it works fine(provided ofcourse the likes of it exist in the 
> table) 
> I would really appreciate a patch as I can't upgrade to 2.1 yet. Even a 
> pointer to a similar issue reported before would be very helpful as I 
> couldn't any myself. Please help! Thanks~

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to