我正在处理 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
}
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:
...
}
添加回答
举报
0/150
提交
取消