2015-06-08 65 views
1

这里是我的jsp页面代码:无法刷新页面并保持jsp页面上选择价值

<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<%@ page import="java.sql.*"%> 
<%@ page import="java.io.*"%> 
<%@ page import="java.util.*"%> 
<%@ page import="test.Obiekt"%> 
<%@ page import="test.ListaObiektow"%> 
<%@ page import="test.Termin"%> 
<%@ page import="test.ListaTerminow"%> 
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>menu główne</title> 

<meta name="viewport" content="initial-scale=1, maximum-scale=1"> 


<meta name="android-mobile-web-app-capable" content="yes"> 
<meta name="android-mobile-web-app-status-bar-style" content="black"> 

<link href="css/ratchet.css" rel="stylesheet"> 
<link href="css/ratchet-theme-android.css" rel="stylesheet"> 


<script src="js/ratchet.js"></script> 
<script type="text/javascript"> 
function Refresh(idObiekt){ 
    location.href="pilkaNozna.jsp?idObiekt=" + idObiekt; 
    } 
</script> 
</head> 
<body> 
    </br> 
    </br> 
    </br> 
    <header class="bar bar-nav"> 
     <a class="icon icon-left-nav pull-left" href="wyszukaj.jsp"></a> 
     <h1 class="title">Wybierz obiekt</h1> 
    </header> 

    <div id="content"> 
     <div class="tabelawybor"> 

      <b>Wybierz obiekt:</b> 
      <% 
       ArrayList<Obiekt> list = new ListaObiektow().getObiekty(); 
      %> 
      <form name="obiekt"> 
       <select name="obiekt" onChange="Refresh(this.value)"> 

        <% 
        for (Obiekt obiekt : list) { 
         String selectedObiekt = request.getParameter("obiekt"); 
       %> 
        <option value="<%=obiekt.idObiekt%>" 
         <%= ((Integer.toString(obiekt.idObiekt)).equals(selectedObiekt))?"selected":""%>><%=obiekt.nazwa%> 
         <%=obiekt.adres%></option> 
        <% 
        int idObiekt = obiekt.idObiekt; 
         request.setAttribute("idObiekt", idObiekt); 

       %> 
        <% 
        } 
       %> 

       </select> 
      </form> 
     </div> 

     <div class="tabelawybor"> 
      <td><b>Wpisz liczbę uczestników:</b><input type="text" 
       name="uczest" /></td> 
     </div> 

     <div class="tabelawybor"> 
      <table class="center"> 

       <tr> 
        <td>Nazwa obiektu:</td> 
        <td>Data:</td> 
        <td>Godzina</br> rozpoczęcia: 
        </td> 
        <td>Godzina</br> zakończenia: 
        </td> 
        <td></td> 
       </tr> 
       <% 
        ArrayList<Termin> lista = new ListaTerminow().getTerminy(); 
        for (Termin termin : lista) { 
       %> 
       <tr> 
        <td><%=termin.nazwaObiektu%> <%=termin.adresObiektu%></td> 
        <td><%=termin.dzien%></td> 
        <td><%=termin.odKtorej%></td> 
        <td><%=termin.doKtorej%></td> 
        <td><form action="Rezerwuj" method="post"> 
          <button class="btn btn-primary">Zarezerwuj</button> 
         </form></td> 
       </tr> 
       <% 
        } 
       %> 
      </table> 
     </div> 
    </div> 


</body> 
</html> 

ListaTerminow.java

package test; 

import test.ConnectionClass; 
import test.ListaObiektow; 
import test.Obiekt; 

import java.io.IOException; 
import java.sql.*; 
import java.util.ArrayList; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import test.ListaObiektow; 
public class ListaTerminow { 
    Connection conn; 
    int idObiekt; 
    public ListaTerminow() throws SQLException 
    { 
     conn = ConnectionClass.Polacz(); 
    } 


    public ArrayList<Termin> getTerminy() throws SQLException, ClassNotFoundException 
    { 
     ArrayList<Termin> terminy = new ArrayList<Termin>(); 


     ResultSet rs = null; 

     String query = "SELECT obiekty.nazwa,obiekty.adres, termin.dzien, termin.odKtorej, termin.doKtorej FROM termin LEFT JOIN obiekty ON termin.idObiekt = obiekty.idObiekt WHERE termin.czyZajety = false AND obiekty.idObiekt = ?"; 
     PreparedStatement ps = conn.prepareStatement(query); 

     ps.setLong(1, idObiekt); 
     rs = ps.executeQuery(); 



     while(rs.next()) 
     { 
      Termin termin = new Termin(); 

      termin.setNazwaObiektu(rs.getString(1)); 
      termin.setAdresObiektu(rs.getString(2)); 
      termin.setDzien(rs.getDate(3)); 
      termin.setOdKtorej(rs.getString(4)); 
      termin.setDoKtorej(rs.getString(5)); 
      terminy.add(termin); 
     } 
     return terminy; 
    } 
} 

我找到解决方案来刷新,并记住后选择选项值从选择的形式。但现在,我想以下面的选择形式显示所有“终止”。例如:当我选择第一个选项在选择形式(obiekt.idObiekt = 1),然后我想显示所有终端obiekt id 1英寸。你可以帮我吗 ?

+0

您是否考虑过[cookies](https://www.hscripts.com/tutorials/jsp/jsp-cookie.php)? –

+0

不,我没有。我更喜欢javascript。 – abecadlo

+0

您需要保留状态客户端。为此,您需要使用cookie,localStorage或查询字符串参数。 – Cymen

回答

1

首先,把你的选择放在一个表格中。因此,当您在刷新期间提交时,您可以通过String selectedObiekt = request.getParameter(“obiekt”)获取它所持有的值。然后修改您的选项以阅读

<option value="<%=obiekt.idObiekt%>" <%= ((Integer.toString(obiekt.idObiekt)).equals(selectedObiekt))?"selected":""%>><%=obiekt.nazwa%> 
        <%=obiekt.adres%></option> 
+0

我应该只使用

还是应该使用?无论如何,日食调用语法错误(插入“)”来完成表达式) – abecadlo

+0

我编辑了我的文章。一个闭幕支架失踪 –

+0

好的。有一个问题,因为idObiekt是整数类型。据我所知,整数是原始类型,所以我不能使用.equals子句,我可以吗? – abecadlo