2011-05-20 136 views
1

我有一个JSP文件中的以下代码:<a>标签在HTML

rs=stmt.executeQuery("select * from routemaster"); 
if(rs!=null){ 
    %> 
    <table class="notebook" align="center"> 
    <tr class=row_title> 
    <th class=row_title>RouteID</th> 
    <th class=row_title>RouteCode</th> 
    <th class=row_title>BusNo</th> 
    <th class=row_title>InBoundTime</th> 
    <th class=row_title>OutBoundtime</th> 
    <th class=row_title>Location</th></tr> 
    <% 
    while(rs.next()){ 
     RouteID=rs.getString(1); 
     RouteCode=rs.getString(2); 
     InBoundtime=rs.getString(4); 
     OutBoundtime=rs.getString(5); 
     BusNo=rs.getString(6); 
     Location=rs.getString(7); 
     DisRow++; 

     %><tr class= <%=(DisRow%2!=0)? "row_even" : "row_odd"%>> 
     <td><%=RouteID%></td> 
     <td><a onclick="sendInfo('<%=RouteCode%>') " ><%=RouteCode%></a></td> 
     <td><%=BusNo%></td> 
     <td><%=InBoundtime%></td> 
     <td><%=OutBoundtime%></td> 
     <td><%=Location%></td> 
    </tr><% 
    } 
    %></table><% 
} 

而下面的JS代码:

sendInfo(txt){ 
    var txt = window.opener.document.addbus0.RouteCode; 
    txt.value = txtVal; 
    window.close(); 
} 

每当与RouteCode点击一个链接,然后在窗口的需求关闭并且所选的RouteCode需要存储在会话中。我怎样才能做到这一点?

+0

当你说会话时,你在谈论服务器端的'HttpSession'吗?浏览器中没有会话.. – 2011-05-20 17:14:58

+2

另外,不推荐从JSP内部的scriptlet执行SQL。你至少可以使用JSTL进行循环。 – 2011-05-20 17:16:03

回答

0

至此,您需要将客户端的值发送到服务器。实现此目的的正常方法是让客户单击链接或将表单提交到服务器端的URL,并将该值作为URL中的请求参数发送,或作为表单中的隐藏输入发送。

由于您使用的链接,这里有一个链接的示例:

<a href="sendInfo.jsp?routeCode=<%=routeCode%>"><%=routeCode%></a> 

然后在sendInfo.jsp只是做

<% 
    String routeCode = request.getParameter("routeCode"); 
    session.setAttribute("routeCode", routeCode); 
%> 
<script> 
    window.opener.document.addbus0.RouteCode.value = '<%=routeCode%>'; 
    window.close(); 
</script> 

无关到具体的问题,这代码风格并不是最佳实践。 Java代码属于Java类,不属于JSP文件。 JSP文件应该只包含HTML,JSP标签和EL。另请参阅How to avoid Java code in JSP files?此外,Java coding conventions要求变量名称应以小写字母开头。仔细阅读。你有很长的路要走,祝你好运。