0
텍스트 필드가있는 양식이 있습니다. 사용자는 텍스트 필드에 전자 메일 주소를 입력하고 사용자가 양식을 제출하면 Action
클래스는 Users
테이블에서 uid
사용자를 찾고 uid
을 <s:actionmessage/>
이라는 메시지로 JSP 페이지에 표시합니다. IndexOutOfBoundsException
이 나옵니다.java.lang.IndexOutOfBoundsException : 인덱스 : 0, 크기 : 0
내 JSP 양식은 다음과 같습니다
는<s:form action="okadddqs" method="post" cssClass="text">
<s:textfield label="Your Email address " name="email"/>
<s:submit value="Find Uid"/>
</s:form>
Action
클래스의 코드는 다음과 같습니다
java.lang.ClassCastException: org.hibernate.impl.QueryImpl cannot be cast to java.util.List
: 내가 모든 시도의 catch 블록을 제거 할 때
package com.rambo.action;
import beans.Users;
import com.opensymphony.xwork2.ActionSupport;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.hibernate.Session;
/**
*
* @author ROMO
*/
@ManagedBean
@SessionScoped
public class NewQuestion extends ActionSupport {
private String email;
private List<Users> ul = new ArrayList<Users>();
public List<Users> getUl() {
return ul;
}
public void setUl(List<Users> ul) {
this.ul = ul;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
/* i have used many where the getUid() and getEmail() even in the error and messages to find what the value it is getting on error. */
@Override
public String execute() throws Exception {
Session session = null;
int d;
try {
session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
try {
ul = (List<Users>) session.createQuery("from Users c where c.email = '" + getEmail() + "'");
if (!ul.isEmpty()) {
d = ul.get(0).getUid();
} else {
this.addActionError("Oops. Sorry. You are Not Allowed now. Please Try Again Later." + getEmail() + ","+ ul.get(0).getUid());
session.close();
return ERROR;
}
} catch (Exception e) {
this.addActionError("Oops. There was an error." + getEmail() + ","+ ul.get(0).getUid());
session.close();
return ERROR;
}
session.getTransaction().commit();
} catch (Exception e) {
this.addActionError("Oops. An Error Encountered...! Email address " + getEmail() + ","+ ul.get(0).getUid()+" not registered. Try with your new email address.");
session.close();
return ERROR;
}
this.addActionMessage("Your Uid is : " + ul.get(0).getUid());
return SUCCESS;
}
@Override
public void validate() {
if ("".equals(getEmail()) || getEmail() == null) {
this.addActionError("Email is Compulsory to input..!" + getCname());
} else if (getEmail().indexOf("@") < 0 || getEmail().indexOf(",") > 0 || getEmail().indexOf(".") < 0 || lastEmailFieldTwoCharsOrMore(getEmail()) == false) {
this.addActionError("Please Input a valid email address." + getCname());
}
}
}
내가 같은 예외가
POJO를 사용하여 테이블의 빈과 매핑을 올바르게 수행했습니다. 누군가가 오류를 지적 할 수 있습니까? 나는 Struts와 함께 Hibernate를 사용하고있다.
해당 예외에 대한 전체 스택 추적을 게시하십시오. – Lion
죄송하지만 실제로 glassfish 서버 로그에 stacktrace 오류가 표시되지 않습니다. 그러나 유일한 예외는 브라우저에서 볼 수 있습니다. – codeofnode
'try ... catch'를 사용하여 예외를 잡기 때문입니다. 일시적으로이'try ... catch'를 주석 처리하면 스택 추적을 얻을 수 있습니다. 사용자가 스택 추적을보고 난 후에 만 예외의 정확한 원인을 더 정확하게 추측 할 수 있기 때문입니다. – Lion