ArrayList<String> cs = CourseAssignments.getInstance().getStudentCoursesByName(sname); 
                 %>

                  <table border="1" cellspacing="1" cellpadding="8" bgcolor= #EBDDE2> 

                <%
                Iterator<String> i = cs.iterator();
                while(i.hasNext()){
                %>
                <tr>
                  <td><%= i.next() %><input type= "radio" name= "courses" value="<%= i.next() %>"/></td>
                </tr>
                <%}%>
            </table>
              <center><input type= "submit" value= "Submit"></center>
              </form>
                 <%}

In ArrayList cs I have all the courses that a student has.
In a table I show these courses and it works if I don't use RADIO input.
I want to display a radio button near each course, then user selects one and I will display the marks for that course.
I get: "org.apache.jasper.JasperException: An exception occurred processing JSP page /ComplexSearch/Seek.jsp at line 61

58:                 while(i.hasNext()){
59:                 %>
60:                 <tr>
61:                   <td><%= i.next() %><input type= "radio" name= "courses" value="<%= i.next() %>"/></td>
62:                 </tr>
63:                 <%}%>
64:             </table>

java.util.NoSuchElementException
    java.util.ArrayList$Itr.next(Unknown Source)
    org.apache.jsp.ComplexSearch.Seek_jsp._jspService(Seek_jsp.java:136)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

"

Recommended Answers

All 2 Replies

Of course because you use i.next() twice on same line therefore you move to possitions. So if you have followinf courses in arraylist {"math", "english", "java", "c++", "php"}
when you come acrros <%= i.next() %> it will get math but when you hit value="<%= i.next() %>" it will get english and so on. That on its own wouldn' cause problem beside title of row and actual value of radio wouldn't match, your problem i sthat you have array size that is odd number so when it reads php there is no pair value.
You should store i.next() value into temporary string that you can then use instead of double of i.next(). Other option is to use for each loop

ArrayList<String> cs = CourseAssignments.getInstance().getStudentCoursesByName(sname);
for(String course : cs){%>
    <tr>
        <td><%= course %><input type= "radio" name= "courses" value="<%= course %>"/></td>
    </tr>
<%}%>

Very clear now :) Thanks a lot!

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.