2016-10-06 2 views
0

사용자가 checkbox를 클릭하면 json이 checkbox의 값으로 연결되고 해당 값이 bean 클래스에 전달되는 구현이 있습니다. 그리고 호출 된 메소드에서 String은 JSON 객체로 파싱됩니다. 두 개의 확인란을 선택하면 완벽하게 작동합니다. 하지만 하나의 확인란을 선택하면 오류가 발생합니다.f :를 사용하여 JSP에서 컨트롤러로 값 전달 checkbox

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

을하기 때문에, 나는 couldnt한다 ArrayList가 이런 식으로 입력하는 이유를 알아 내십시오. User select를 선택했을 때 특별한 경우를 만들었습니다. 하나의 확인란. ArrayList를 가져 와서 toString을 사용하여 String으로 변환합니다.

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

지금 내가 toString에서 얻을 문자열에서 JSON 객체를 생성하기 위해 시도의 catch 블록을 사용 - 같은 그래서, 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가 이와 같이 작동하는 이유는 잘 모르겠습니다!

관련 문제