2016-10-06 64 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是这样工作的!

相关问题