2013-08-27 2 views
0

초보자입니다. 나는 이것이 기본이라는 것을 압니다. 내 프로젝트에서 나는 자바와 MySQL 워크 벤치를 사용하고있다. 아약스를 사용하여 데이터베이스에서 오는 선택 상자를 사용하여 사용자로부터 데이터를 읽는 중입니다. 선택 상자의 코드는문자열을 정수로 변환 할 수 없습니다.

<% 
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> 
<% 
} 
%> 

아래에 언급 된 피사체의 ID가이 코드

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

그러나 정수 변환이 작동하지 않는 라인을 포스트 방법을 사용하려고 다른 페이지로 전달됩니다. 오류가 표시됩니다. 오류는

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 확인 request.getParameter ("제목"); 또는 String [] subjects = request.getParameterValues ​​("subject"); ? – gjman2

+1

plz MVC 아키텍처를 통해 – gjman2

답변

4

Integer.parseInt 메서드는 유효한 정수 값 문자열을 int로 변환합니다. 그렇지 않으면 예외를 throw합니다. 따라서 유효한 정수 값을 전달해야합니다. 때로는 문자열의 후행 공백으로 인해 예외가 발생합니다. 따라서 다음과 같은 것을 피하기 위해 입력 문자열에 trim 메소드를 호출하십시오.

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

또한 subject가 null이 아닌지 확인하십시오. 그래서이 더 나은 것 같다 :

당신이 당신의 데이터 유형을 혼합 정수로 getParameter("subject") 변환하려고하는 것 같습니다
String subject=request.getParameter("subject"); 
int subjectid = 0; 
if(subject !=null && !subject.isEmpty()) 
    subjectid=Integer.parseInt(subject.trim()); 
+0

Juned Ahsan ... 감사합니다. 트림 기능이 작동합니다 .. – Salini

+0

@Salini 그것이 효과가 좋았습니다. 내 대답이 도움이 되었다면, 내 대답에 왼쪽의 눈금을 클릭하여 동의하십시오. 답변을 수락하면 다른 사람들도 같은 문제에 직면하게됩니다. –

+0

나중에 나는 시도했다. 그러나 내가 6 분 이후에 그 대답을 받아 들일 수 있다는 것을 보여 주었다. 그게 왜 늦게까지 미안해. – Salini

1

.

아마 "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()); 

는 부호 첨부 10 진수의 정수로 해, 캐릭터 라인의 인수를 구문 분석합니다. 캐릭터 라인의 문자는, 최초의 문자가 부의 값을 나타내는 ASCII 마이너스 기호 '-'('\ u002D') 또는 '+'('\ u002B') ASCII의 부호가되는 것을 제외 해, 모두 10 진수가 아니면 안됩니다 양수 값을 나타냅니다. 인수 및 기수 10이 parseInt (java.lang.String, int) 메소드의 인수로서 지정되었을 경우와 완전히 같은, 결과의 정수 치가 돌려 주어집니다.

관련 문제