java.lang.İllegalStateException: yanıt işlendi sonra ileri Olamaz
int noOfRows = Integer.parseInt(request.getParameter("noOfRows"));
String chkboxVal = "";
// String FormatId=null;
Vector vRow = new Vector();
Vector vRow1 = new Vector();
String GroupId = "";
String GroupDesc = "";
for (int i = 0; i < noOfRows; i ) {
if ((request.getParameter("chk_select" i)) == null) {
chkboxVal = "notticked";
} else {
chkboxVal = request.getParameter("chk_select" i);
if (chkboxVal.equals("ticked")) {
fwdurl = "true";
Statement st1 = con.createStatement();
GroupId = request.getParameter("GroupId" i);
GroupDesc = request.getParameter("GroupDesc" i);
ResultSet rs1 = st1
.executeQuery("select FileId,Description from cs2k_Files "
" where FileId like 'M%' and co_code = "
ccode);
ResultSetMetaData rsm = rs1.getMetaData();
int cCount = rsm.getColumnCount();
while (rs1.next()) {
Vector vCol1 = new Vector();
for (int j = 1; j <= cCount; j ) {
vCol1.addElement(rs1.getObject(j));
}
vRow.addElement(vCol1);
}
rs1 = st1
.executeQuery("select FileId,NotAllowed from cs2kGroupSub "
" where FileId like 'M%' and GroupId = '"
GroupId "'" " and co_code = " ccode);
rsm = rs1.getMetaData();
cCount = rsm.getColumnCount();
while (rs1.next()) {
Vector vCol2 = new Vector();
for (int j = 1; j <= cCount; j ) {
vCol2.addElement(rs1.getObject(j));
}
vRow1.addElement(vCol2);
}
// throw new Exception("test");
break;
}
}
}
if (fwdurl.equals("true")) {
// throw new Exception("test");
// response.sendRedirect("cs2k_GroupCopiedUpdt.jsp") ;
request.setAttribute("GroupId", GroupId);
request.setAttribute("GroupDesc", GroupDesc);
request.setAttribute("vRow", vRow);
request.setAttribute("vRow1", vRow1);
getServletConfig().getServletContext().getRequestDispatcher(
"/GroupCopiedUpdt.jsp").forward(request, response);
}
Bu işlev, yukarıda belirtilen hata atar ve sorun spot kuramıyorum. Herhangi bir yardım?
CEVAP
Ortak bir yanlış anlaşılma arasında başlangıç olduğunu düşündüklerine göre arama forward()
sendRedirect()
ki sihirli bir şekilde çıkmak ve "atlama" yöntemiyle blok, burada göz ardı kalıntısı kodu. Örneğin:
protected void doPost() {
if (someCondition) {
sendRedirect();
}
forward(); // This is STILL invoked when someCondition is true!
}
Bu nedenle aslında doğru değil. Farklı başka bir Java yöntemleri (elbette System#exit()
bekliyoruz) göre davranır onlar kesinlikle değil. Yukarıdaki örnek someCondition
true
, o zaman şans vardırbüyüközel durum alacak
java.lang.İllegalStateException: yanıt işlendi sonra ileri Olamaz
Bu if
ifadesi sendRedirect()
forward()
bir çağrı olsun. if
deyim forward()
telefon ve daha sonra sendRedirect()
sonra aşağıda arıyorsanız özel durum:
java.lang.İllegalStateException: yanıt işlendi sonra. () çağrısı sendRedirect
Bu sorunu gidermek için ya return;
ifadesi sonradan eklemek gerekir
protected void doPost() {
if (someCondition) {
sendRedirect();
return;
}
forward();
}
... ya da başka bir bloğu tanıtmak.
protected void doPost() {
if (someCondition) {
sendRedirect();
} else {
forward();
}
}
Kod kök neden naildown için yöntem blok çıkmadan veya kod kalıntısı atlamadan sendRedirect()
forward()
telefon olan herhangi bir hat için sadece arama. Bu özel sunucu uygulaması daha önce çağrılmış olan herhangi bir sunucu veya filtre belirli kod satırından önce aynı sunucu uygulaması içinde, ama aynı zamanda olabilir.
Alakasızsomut sorun için, gerekli OLANLARI kodunuzu kaynakları sızdırıyor. Bu da Düzelt. İpuçları için, Ayrıca Bkz: 22**
Ekleme <h:form> java neden olur....
java.lang.İllegalStateException: onSav...
ActionBarCompat: java.lang.İllegalStat...
Hata alıyorum "Java.lang.İllegalS...
java.lang.İllegalStateException: belir...