2013-12-15 163 views
0

這裏是我的代碼(由Axis2 Web服務創建,通過蝕JBoss的工具生成)我的java概念有什麼問題?

public PlayerCalendar[] getCalendarByUseridArr(String userid){ 
    au.backpack.Calendar cal=new au.backpack.Calendar(); 
    PlayerCalendar[] arr=new PlayerCalendar[cal.getCalendarByUserid(userid).length]; 
    arr=cal.getCalendarByUserid(userid);//get the hibernate dao result 
    for(int i=0;i<arr.length;i++){ 
      //i want to create new Url value 
     String url=arr[i].getUrl()+"?eventid="+arr[i].getEventid(); 
     arr[i].setUrl(url); 
    } 
    return arr; 
} 

,這裏是我的道功能

public PlayerCalendar[] getCalendarByUserid(String userid){ 
    Session session = HibernateUtil.currentSession(); 
    Transaction tx = null; 
    tx = session.beginTransaction(); 
    List<PlayerCalendar> list =session.createQuery("from PlayerCalendar where userid='"+userid+"'").list(); 
    int listlen=1; 
    if(list.size()>1) 
     listlen=list.size(); 
    PlayerCalendar [] sr = new PlayerCalendar[listlen]; 
    return list.toArray(sr); 
} 

它的工作在我的XML Web服務頁面(Axis2中) ,

的URL值等:

user_calendarEvent.jsp的EventID = 1

但是當我刷新頁面約5〜9倍

它開始追加更多 「的EventID = 1?」:?

user_calendarEvent.jsp事件ID = 1的EventID = 1

,並開始追加後, 每次我刷新它,它總是追加「事件ID = 1」

user_calendarEvent.jsp?的EventID = 1?的EventID = 1?的EventID = 1

但真值只是

user_calendarEvent.jsp?的EventID = 1

其中它錯了嗎?

感謝〜

+0

你是否在調用函數之前檢查isPostBack http://stackoverflow.com/questions/13245188/asp-net-page-ispostback-equivalent-in-jsp-java – ray

+0

也許你正在多次調用該方法。 –

+0

爲什麼你要實例化數組:'PlayerCalendar [] arr = new PlayerCalendar [cal.getCalendarByUserid(userid).length];'當你重新分配給下一條指令時:'ar​​r = cal.getCalendarByUserid(userid);' : –

回答

1

您不關閉Hibernate的Session,所以你PlayerCalendar情況下保持連接會話,然後通過調用

String url=arr[i].getUrl()+"?eventid="+arr[i].getEventid(); 
arr[i].setUrl(url); 

,因爲Hibernate更新每個請求的實體修改其url財產(並連接?eventid=...)。

因此,有多個?eventId=... s的URL是正常的。

+0

這是正確答案,謝謝! –