2016-10-06 72 views
0

我有一個實現,當用戶點擊複選框時,一個json被關聯爲複選框的值,並且該值被傳遞給我的bean類。 而在被調用的方法中,String被解析成JSON對象。 當我選擇兩個複選框時,它工作得很好。但是,如果我選擇一個複選框,那麼它會給我錯誤。使用f:複選框將值從JSP傳遞到控制器

這裏是我的複選框Bean類 -

private ArrayList<String> Ancillary=new ArrayList<String>() ; 


public ArrayList<String> getAncillary() { 
    for(int i=0;i<Ancillary.size();i++){ 
    System.out.println(i+"Object:" +Ancillary.get(i)+"\n\n\n"); 
    } 
    return Ancillary; 
} 

public void setAncillary(ArrayList<String> ancillary) { 
    Ancillary = ancillary; 
} 

這裏是我的方法,我打印JSON特定鍵的值。

public Event updatePax(RequestContext context) throws Exception { 
    ExtrasMenu extrasMenu = (ExtrasMenu) context.getConversationScope().get(ScopeKeys.EXTRASMENU); 
    System.out.println("As a string:"+extrasMenu.getAncillary().toString()); 
    JSONObject json=new JSONObject(extrasMenu.getAncillary().get(0)); 
    System.out.println(json.get("firstName")); 
    } 

這裏是輸出 -

如果只有一個複選框被選中 -

0Object:{"firstName":"TIMOTHY" 
1Object:"lastName":"WALKER" 
2Object:"price":100} 

如果兩個或更多的複選框被選中 -

0Object:{"firstName":"TIMOTHY","lastname":"WALKER","price":"50"} 
1Object:{"firstName":"ANNE","lastname":"WALKER","price":"150"} 

回答

1

因爲,我不可能弄清楚爲什麼ArrayList會像這樣輸入數據, 當用戶選擇時,我創建了一個特例一個複選框。我將採用ArrayList並使用toString將其轉換爲字符串。 所以,的toString的輸出會像 -

{"firstName":"TIMOTHY","lastname":"WALKER","price":"50"} 

現在我用try catch塊創建JSON對象出字符串從我得到的toString的。

  JSONObject json=null; 
      try{ 
      json=new JSONObject(extrasMenu.getAncillary().get(i)); 
     } 
     catch(org.json.JSONException e){ 
       int len=extrasMenu.getAncillary().toString().length(); 
       json=new JSONObject(extrasMenu.getAncillary().toString()); 
     } 

所以如果它引發一個錯誤,完整列表作爲字符串將被用來創建JSON對象。 雖然它工作正常,但我不是很確定爲什麼ArrayList是這樣工作的!

相關問題