2013-08-27 3 views
0

Я новичок. Я знаю, что это просто. В моем проекте я использую Java и MySQL workbench. Я читаю данные от пользователя, используя поле выбора, которое поступает из базы данных с помощью ajax. Код для выбора коробки упоминается нижеНевозможно преобразовать String в Integer

<% 
String a =request.getParameter("course"); 
if(a!=null) 
    { 
     ResultSet rs=s.selectsub(a); 
     String Query="select * from subject where course_id='"+a+"'"; 
%> 
<select name="subject" id="subject"> 
    <option>Select Subject</option> 
    <% 
    while(rs.next()) 
    { 
    %> 
    <option value="<% out.println(rs.getString("subject_id")); %>"> 
    <% out.println(rs.getString("subject")); %></option> 
    <% } %> 
    </select> 
<% 
} 
%> 

и субъект идентификатор передается на другую страницу, используя метод пост и пытается этот код

 String subject=request.getParameter("subject"); 
    int subjectid=Integer.parseInt(subject); 

Но линия преобразования Integer не работает. Отображается ошибка. Ошибка

org.apache.jasper.JasperException: An exception occurred processing JSP page /saveuser.jsp at line 29 
26:   String email=request.getParameter("email"); 
27:   String designation=request.getParameter("designation"); 
28:   String subject=request.getParameter("subject"); 
29:   int subjectid=Integer.parseInt(subject); 
30:   String institute=request.getParameter("institute"); 
31:   String inemail=request.getParameter("inemail"); 
32:   String uname=request.getParameter("uname"); 
+2

Совет. Избегайте использования сценариев и вместо этого используйте JSTL – araknoid

+0

r u sure request.getParameter («subject»); или String [] subject = request.getParameterValues ​​(«subject»); ? – gjman2

+1

PLZ пройти через MVC архитектуры – gjman2

ответ

4

Integer.parseInt метод преобразует действительную строку целого значения к междунар. В противном случае это вызовет исключение. Поэтому убедитесь, что вы передали ему действительное целочисленное значение. Иногда конечное пространство в строке вызывает исключение. Поэтому вызовите метод обрезки на входной строке, чтобы избежать этого:

int subjectid=Integer.parseInt(subject.trim()); 

Также убедитесь, что тема не является нулевой. Так что это, кажется, лучше:

String subject=request.getParameter("subject"); 
int subjectid = 0; 
if(subject !=null && !subject.isEmpty()) 
    subjectid=Integer.parseInt(subject.trim()); 
+0

Спасибо Juned Ahsan ... Это была ошибка. trim функция работает .. – Salini

+0

@ Salini рад, что он сработал. Если мой ответ помог вам, просто примите его, нажав на галочку слева до моего ответа. Принятие ответа помогает другим сталкиваться с одной и той же проблемой. –

+0

Я пробовал, но он показывал, что я могу принять этот ответ через 6 мин. Вот почему его опоздают. – Salini

1

Похоже, вы путаете свои типы данных, пытаясь преобразовать getParameter("subject") к Integer.

Возможно, у вас есть параметр с именем "subject_id", и может ли это сработать?

String subject_id_string=request.getParameter("subject_id"); 
int subjectid=Integer.parseInt(subject_id_string); 
1

Использование Integer.parseInt(String) способ.

int subjectid = Integer.parseInt(subject.trim()); 

Из документации

Анализирует строковый аргумент как десятичное целое. Символы в строке должны быть десятичными цифрами, за исключением того, что первым символом может быть знак минус ASCII «-» («\ u002D»), чтобы указать отрицательное значение или знак ASCII плюс «+» («\ u002B») для указания положительного значения. Полученное целочисленное значение возвращается точно так же, как если бы аргумент и radix 10 были указаны как аргументы метода parseInt (java.lang.String, int).