Java JSP不使用下拉菜单返回结果
在获取基于下拉选择的查询结果时遇到问题,出于某种原因,在尝试将其发布到jsp时不会返回任何内容 下面是我的代码 这是我的index.jspJava 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
<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}