使用f:复选框将值从JSP传递到Controller

时间:2016-10-06 20:38:11

标签: java json spring checkbox

我有一个实现,当用户单击复选框时,json将作为checkbox的值关联,并且该值将传递给我的bean类。 在调用的方法中,然后将String解析为JSON对象。 当我选择两个复选框时,它完全正常。但如果我选择一个复选框,那么它会给我错误。

这是我的Checkbox 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 个答案:

答案 0 :(得分:1)

因为,我无法弄清楚为什么ArrayList会像这样输入, 当用户选中一个复选框时,我创建了一个特殊情况。我将使用toString获取ArrayList并将其转换为String。 因此,toString的输出将类似于 -

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

现在我使用了一个try catch块来创建来自toString的字符串中的JSON对象。

            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这样工作!

相关问题