【问题标题】:how to get null in the drop down value如何在下拉值中获取null
【发布时间】:2015-05-12 22:30:41
【问题描述】:

我有 2 个长度不等的下拉菜单。我将每个下拉列表的值传递给控制器​​,并在执行一些操作后从那里将其保存到数据库中。

我有一个查询,如果第一个下拉列表有 4 个条目,第二个下拉列表有 7 个条目,那么传递给控制器​​的第一个下拉列表的最后 3 个条目应该为空。我怎样才能实现它。

我尝试了一些代码,但它不起作用。

if(firstDropdownNames != null || secondDropdownNames != null){
  for(int i=0; i < Math.max(firstDropdownNames.length,secondDropdownNames.length); i++)
    {
        if(secondDropdownNames.length> firstDropdownNames.length){
           int j= secondDropdownNames.length - firstDropdownNames.length;
            if(i==j){
            String firstDropdownId = null;
            firstDropdownNames[i] = null;
            String secondDropdownId = service.getSecondId(secondDropdownNames[i]);
            Pair pair = new Pair(ProjectId, firstDropdownId, firstDropdownNames[i], secondDropdownId, secondDropdownNames[i]);
            service.save(pair);
           }
        }
       else if(firstDropdownNames.length> secondDropdownNames.length){
           int j= firstDropdownNames.length - secondDropdownNames.length;
            if(i==j){
            String secondDropdownId = null;
            secondDropdownNames[i] = null;
            String firstDropdownId = service.getFirstId(firstDropdownNames[i]);
            Pair pair = new Pair (ProjectId, firstDropdownId, firstDropdownNames[i], secondDropdownId, secondDropdownNames[i]);
            service.save(pair);
           }
        }
        else{
          String firstDropdownId = service.getFirstId(firstDropdownNames[i]);
           String secondDropdownId = service.getSecondId(secondDropdownNames[i]);
           Pair pair = new Pair (ProjectId, firstDropdownId, firstDropdownNames[i], secondDropdownId, secondDropdownNames[i]);
          service.save(pair);
    }
    response.setMessage("Saved successfully");
  }

【问题讨论】:

    标签: java save


    【解决方案1】:

    如果

    firstDropdownNames.length == 7 and secondDropdownNames == 4
    

    那么对于

    int j= firstDropdownNames.length - secondDropdownNames.length;
    

    j 永远是 3,因此

    i==j
    

    仅当 i == 3 时才成立。您可能想要的而不是 i==j 是:

    if(i >= secondDropdownNames.length)
    

    (假设 secondDropdownNames.length 较短,否则使用 firstDropdownNames.length)

    另外,firstDropdownNames 和 secondDropdownNames 的类型是什么。看起来它们是数组。如果是这样,那么您必须小心,因为如果 secondDropdownNames.length == 4 并且您在 i>= 4 时尝试 secondDropDownNames[i] = null,那么您将得到一个非法参数异常,因为您试图在数组边界。

    【讨论】:

    • 是的,情况就是这样。那么我该如何解决这个获取非法参数异常的问题,因为我将在数组边界之外设置一个值。
    • 它们都是数组,当我保存时,我必须通过 secondDropDownNames[i] = null when i>secondDropdownNames.length 它会抛出非法参数异常。
    • 你可能不需要调用“firstDropdownNames[i] = null;”或“secondDropdownNames[i] = null;”相反,请尝试像这样创建您的 Pair: Pair pair = new Pair(ProjectId, null, null, secondDropdownId, secondDropdownNames[i]);或 new Pair(ProjectId, firstDropDownId, firstDropdownNames[i], null,null);
    猜你喜欢
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多