2016-10-06 42 views
0

ユーザーがチェックボックスをクリックすると、jsonがチェックボックスの値として関連付けられ、その値がBeanクラスに渡されます。 そして、呼び出されたメソッドでは、StringがJSONオブジェクトに解析されます。 2つのチェックボックスを選択すると、正常に動作します。しかし、1つのチェックボックスを選択するとエラーになります。f:checkboxを使用してJSPからControllerに値を渡すチェックボックス

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内の特定のキーの値を印刷する私の方法である -

は、ここに私のチェックボックスBeanクラスです。

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

をするので、私はcouldntのなぜArrayListがこのような入力を受けているのかを理解してください 私はUser select 1つのチェックボックスをオンにします。私はArrayListをとり、toStringを使ってそれをStringに変換します。 だから、のtoStringの出力は次のようになります - 今、私は私がのtoStringから取得した文字列のうち、JSONオブジェクトを作成するためのtry catchブロックを使用

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

エラーが発生した場合は、JSONオブジェクトの作成に文字列としての完全なリストが使用されます。 これはうまくいっていますが、なぜArrayListがこのように機能しているのかについてはわかりません!

関連する問題