猿问

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

我正在处理 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,则它不起作用。


慕容3067478
浏览 124回答 2
2回答

桃花长相依

对于您的问题,我有一个简单的解决方案。当用户全选时,在这种情况下传递空列表,并在进行查询时仅放置此条件。if (outletList.size()==0) {// case for all} else {// do regular stuff}

30秒到达战场

您不是在比较可比较的类型。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...&nbsp; &nbsp; case "ALL":&nbsp; &nbsp; &nbsp; &nbsp; ...&nbsp; &nbsp; ...&nbsp; &nbsp; default:&nbsp; &nbsp; &nbsp; &nbsp; ...&nbsp;}
随时随地看视频慕课网APP

相关分类

Java
我要回答