Ваша реклама могла б бути тут!
1 млн переглядів на місяць!
Google Page Rank: 5

подскажите с массивом в java

🔴 12:26 Повітряна тривога в Харків.обл.
Статус: Offline
Реєстрація: 26.09.2008
Повідом.: 101
  • 🔴 12:26 Повітряна тривога в Харків.обл.
  • #1
подскажите с массивом в java

Все привет. Народ подскажите как быть?
Есть класс который выбирает из базы данных данные в массив String cd_name[], пишу вот такой метод
HTML:
public String[] getStringConectDB(){
		return cd_name[];
	}
на, что жаба жалуется мол ошибка рассогласования. Проблема в том, что в jsp странице надо получить этот массив. Как можно это сделать?
 
  • 🔴 12:26 Повітряна тривога в Харків.обл.
  • #2
на, что жаба жалуется мол ошибка рассогласования.

Название темы совсем не соответствует вопросу. Что это за ошибка такая рассогласования :)?

Например можно так. В сервлете в request положить массив и на jsp его же из достать. Что-то типа:
Код:
request.setAttribute("cdName", cd_name);
request.getRequestDispatcher("/index.jsp").forward(request, response);
 
  • 🔴 12:26 Повітряна тривога в Харків.обл.
  • #3
Все привет. Народ подскажите как быть?
Есть класс который выбирает из базы данных данные в массив String cd_name[], пишу вот такой метод
HTML:
public String[] getStringConectDB(){
		return cd_name[];
	}
на, что жаба жалуется мол ошибка рассогласования. Проблема в том, что в jsp странице надо получить этот массив. Как можно это сделать?

Что значит жаба жалуется? Есть ошибки компиляции, а есть ошибки рантайма. Какая у вас ошибка рассогласования, трудно даже представить. За копипаст куска кода и стек трейса, вас никто здесь бить ногами не будет.

Судя по этой строчке:
Код:
return cd_name[];
У вас должна быть ошибка компиляции. Уберите квадратные скобки после имени переменной.
 
  • 🔴 12:26 Повітряна тривога в Харків.обл.
  • #4
Вот класс который достает значения из базы данных:
HTML:
public class ConectedDB {
	
	private String userName = "root";
	private String password = "";
	
	int i = 0;
	
	public String cd_name[] = new String[22];
	public String gener[] = new String[22];
	public String type[] = new String[22];
	
	public ConectedDB(){
	
		try {		
				
			Statement statement = null; 
			ResultSet rs = null; 
			String url = "jdbc:mysql://localhost/shopcd";
			Class.forName ("com.mysql.jdbc.Driver");
			Connection conn = DriverManager.getConnection (url, userName, password);
			statement = conn.createStatement();
			rs = statement.executeQuery("SELECT cd_name.name, gener.gener, disc.type FROM cd_name, gener, disc WHERE cd_name.num_gener = gener.num_gener AND disc.id_disc = gener.type");
			while(rs.next() && i < 22){
				cd_name[i] = rs.getString("name");
				gener[i] = rs.getString("gener");
				type[i] = rs.getString("type");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public String[] getStringConectDB(){
		return cd_name[];
	}
	
}

в строке return cd_name[]; понятное дело ошибка.

Мне надо из этого класса передать массивы cd_name[], gener[], type[] в jsp страницу index.jsp Как это правильно сделать?
 
  • 🔴 12:26 Повітряна тривога в Харків.обл.
  • #5
Код:
while(rs.next() && i < 22){
				cd_name[i] = rs.getString("name");
				gener[i] = rs.getString("gener");
				type[i] = rs.getString("type");
			}

в этом цикле переменная i не инкрементируется, поэтому все данные из резалтсета будут заливатся в 0 ячейку.

Мне надо из этого класса передать массивы cd_name[], gener[], type[] в jsp страницу index.jsp Как это правильно сделать?

Как правильно предложил тов.Fluffy в сервлете делаешь
Код:
request.setAttribute("cdName", cd_name);
request.getRequestDispatcher("/index.jsp").forward(request, response);

в jsp:
Код:
String[] cdNameArr = (String[])session.getAttribute( "cdName");
 
  • 🔴 12:26 Повітряна тривога в Харків.обл.
  • #6
спс за совет буду пробовать



Не могу понять, дебагером проверяю вот в этих строчках все нормально присваивается
Код:
request.setAttribute("cdName", cd_name);
request.getRequestDispatcher("/index.jsp").forward(request, response);
вот тут дебагер показывает null
Код:
String[] cdNameArr = (String[])session.getAttribute( "cdName");
такое впечатление, что cd_name в сессию не попадает



Все разобрался вместо сессии надо запрос вписывать
 
Останнє редагування:
Назад
Зверху Знизу