为了账号安全,请及时绑定邮箱和手机立即绑定

如果不是根据用户选择工作

如果不是根据用户选择工作

慕容3067478 2021-12-01 19:42:30
我正在处理 HTML 表格。为此,我从我的 Java 代码返回 JSON。我有一个作为 HTML 页面的 UI,其中有一个从日期到日期的表单和一个具有 4 个这样的选项的选择标签 <form id="formId" method="get">        <div class="container">            <h4>Start Date:</h4>            <input type="text" id="startdate" name="fromdate" width="276"                placeholder="dd/mm/yyyy" required />            <h4>End Date:</h4>            <input type="text" id="enddate" name="todate" width="276"                placeholder="dd/mm/yyyy" required />            <h4>Outlets:</h4>            <select name="outlet" id="all">                <option>ALL</option>                <c:forEach var="item" items="${obj.outlet}">                    <option>${item}</option>                </c:forEach>            </select>            <br>            <br>            <div>                <button id="button" class="btn btn-default" type="submit">Search</button>            </div>        </div></form>我从表单中获取该输入并在 servlet 中以 doget 方法获取值,如下所示:    String fromdate=request.getParameter("fromdate");        String todate=request.getParameter("todate");        String outlet=request.getParameter("outlet");//      System.out.println(String.format("fromdate: %s, todate: %s, outlet: %s", new Object[]{fromdate, todate, outlet}));        List<String> outletList = Arrays.asList(outlet.split("\\s*,\\s*"));        try {            String json = HourlySalesDateOutlet.createJson(outletList, fromdate, todate);            response.getWriter().write(json);//          System.out.println("dheeraj"+json);        }        catch (Exception e) {            e.printStackTrace();        }    }现在这是我的 Java 类,我在其中编写了两个查询,一个是用户是否选择全部,另一个是用户选择特定插座。我的问题是 if 语句没有执行,只有 else 正在执行,如果用户从 FORM 中选择一个出口,如果用户选择 ALL,则它不起作用。
查看完整描述

2 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

对于您的问题,我有一个简单的解决方案。当用户全选时,在这种情况下传递空列表,并在进行查询时仅放置此条件。


if (outletList.size()==0) {

// case for all

} else {

// do regular stuff

}


查看完整回答
反对 回复 2021-12-01
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

您不是在比较可比较的类型。outletList是 aList并且它不能等同于 aString即使列表可能只包含一个恰好是 a 的元素String。所以,outletList.equals("ALL")不会做你认为它会做的事情。


但这提出了一个有趣的观点。您有一个选择列表,但multiple为什么不返回一个始终是单个值的列表?为什么在ALL选择时切换到发回空列表?这没有意义;正如预期的那样,有一个选择。这增加了不必要的混乱。


尝试将单个值作为 a 发回String并让该值确定逻辑,以便您具有灵活性。如果这是无法避免的名单,然后只接受一个值(list[0]例如)和呼叫平等上是 没有的List。


if(outletList[0].equals("All")) {...}


如果你后来发现自己需要不止一if-else对,你可以切换到switch这样的:


switch(outletList[0]) { // or the single value...

    case "ALL":

        ...

    ...

    default:

        ... 

}


查看完整回答
反对 回复 2021-12-01
  • 2 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信