Java JSP不使用下拉菜单返回结果

Java JSP不使用下拉菜单返回结果,java,jsp,servlets,Java,Jsp,Servlets,在获取基于下拉选择的查询结果时遇到问题,出于某种原因,在尝试将其发布到jsp时不会返回任何内容 下面是我的代码 这是我的index.jsp <form method="post" action="Test"> <h3>Get today's feed event</h3> <p> <select name="colour" size="1" class="selectpicker" data-style="bt

在获取基于下拉选择的查询结果时遇到问题,出于某种原因,在尝试将其发布到jsp时不会返回任何内容

下面是我的代码

这是我的index.jsp

<form method="post" action="Test">
    <h3>Get today's feed event</h3>
    <p>
        <select name="colour" size="1" class="selectpicker" data-style="btn-inverse">
            <option value="light">Runningball</option>
            <option value="amber">Enetpulse</option>
            <option value="DonBest">DonBest</option>
            <option value="BetRadar">Betradar</option>

        </select>
        </p>
         <input type="submit" value="Submit" class="btn">
</form>

获取今天的提要事件

长跑球
电子脉冲
唐贝斯特
贝塔雷达

这是我的逻辑

public List<String> getColours(String colour) {


    List<String> colours = new ArrayList<String>();
     if(colour.equals("DonBest")){


        try {
            connectToCoral3();
            CachedRowSet res1 = con.selectQuery(
                    "select id,name,event_time from nodes where syst_id=16 and event_time>=now() order by event_time");

            //some debugging code
            while (res1.next()) {
                System.out.println("id= " + res1.getString("id") + " name= "
                        + res1.getString("name"));
            }

            while (res1.next()) {
                colours.add(res1.getString("id"));
                colours.add(res1.getString("name"));
                colours.add(res1.getString("event_time"));

        }
        } catch (Exception e) {
            System.out.println(e.getStackTrace());
            e.getStackTrace();
        }
     }else if(colour.equals("light")){
        colours.add("orange");
        colours.add("pink");
    }


    return (colours);
}
public List getcolors(字符串颜色){
列表颜色=新的ArrayList();
if(颜色等于(“DonBest”)){
试一试{
连接到oral3();
CachedRowSet res1=con.selectQuery(
“从syst_id=16和event_time>=now()按事件时间排序的节点中选择id、名称、事件时间”);
//一些调试代码
while(res1.next()){
System.out.println(“id=”+res1.getString(“id”)+“name=”
+res1.getString(“名称”);
}
while(res1.next()){
colors.add(res1.getString(“id”));
colors.add(res1.getString(“name”));
添加(res1.getString(“事件时间”));
}
}捕获(例外e){
System.out.println(e.getStackTrace());
e、 getStackTrace();
}
}else if(颜色等于(“光”)){
颜色。添加(“橙色”);
颜色。添加(“粉色”);
}
返回(颜色);
}
servlet

public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException {
    try {
        String c = request.getParameter("colour");
        ColourExpert ce = new ColourExpert();
        List<String> styles = ce.getColours(c);

    request.setAttribute("styles",styles);
    System.out.println(styles);
    } catch (Exception e) {
        request.setAttribute("error", "Retrieving rows failed.");
        e.printStackTrace();
    }


    RequestDispatcher view = request.getRequestDispatcher("WEB-INF/Home/simplePage.jsp");
    view.forward(request, response);
public void doPost(HttpServletRequest请求,HttpServletResponse响应)
抛出IOException、ServletException{
试一试{
字符串c=request.getParameter(“颜色”);
ColorExpert ce=新的ColorExpert();
列表样式=ce.GetColor(c);
setAttribute(“样式”,样式);
System.out.println(样式);
}捕获(例外e){
setAttribute(“错误”,“检索行失败”);
e、 printStackTrace();
}
RequestDispatcher视图=request.getRequestDispatcher(“WEB-INF/Home/simplePage.jsp”);
视图。转发(请求、响应);
这是我的jsp

<c:forEach items="${styles}" var="styles">
        <c:out value="${styles.id}" />
        <c:out value="${styles.name}" />
        <c:out value="${styles.event_time}" />
    </c:forEach>
    <c:if test="${not empty error}">Error: ${error}</c:if>

错误:${Error}

任何帮助都会很好

删除代码中的第一个
循环,然后它就可以工作了

//Remove This
while (res1.next()) {
    System.out.println("id= " + res1.getString("id") + " name= " + res1.getString("name"));
}

首先,要访问JSTL中的请求变量,您需要将代码更改为:

<c:forEach items="${requestScope.styles}" var="styles">
    <c:out value="${styles.id}" />
    <c:out value="${styles.name}" />
    <c:out value="${styles.event_time}" />
</c:forEach>
<c:if test="${not empty error}">Error: ${error}</c:if>

错误:${Error}

你能把你得到的错误放进去吗?这就是我没有得到任何错误的原因,只是没有返回我的查询结果。这很正常,因为你把代码放在一个try/catch块中……我的意思是放e行的输出。printStackTrace()…谢谢,这真是太愚蠢了。结果发现我试图引用不存在的id,所以它给了我一个错误,说找不到id。下面是我的修复错误:${error}