2013-01-18 68 views
0

是否有可能把swicthcase放在While循環中?我想,但我不能值傳遞到另一個頁面,它只顯示空開關箱裏面While循環

<form action="NewFile1.jsp" method="get"> 
Birthday: <br> 
<%! int i = 1, j; 
    String mon = "";%> 
<% 
    out.println("<select name='month'>"); 
    while(i <= 12) { 
     out.print("<option>" + i + "</option>"); 
     i++; 
    } 
    out.print("</select>"); 



%> 


    <input type="submit" value="submit"> 
    </form> 
</body> 

頁輸出在組合框中

<body> 
<% 
//String mo = request.getParameter("month"); 
String mo = ""; 
switch(request.getParameter("month")) { 
case "1": mo = "January"; break; 

} 
%> 

<%=out.print("Birthday: " + mo)%> 

例如選擇的值,在組合框中是數字分別代表月份。如果用戶選擇了2,它應該在下一頁上放棄「二月」。

+0

在這段代碼中我放置在輸出頁面上的switchcase。我試圖把它放在NewFile.jsp中,但它不起作用。我的問題是,是否有可能把開關箱放在while循環中? –

+1

首先,你爲什麼還在使用scriptlets?這是2013年。醒來! – adarshr

+0

你不清楚請求參數是否返回'null',或者'switch'沒有被設置爲'mo'。請在做出可能不相關的交換機假設之前直接打印/調試request.getParameter(「month」)。如果在那個時候它已經是'空'了,那麼交換機就沒有任何問題了。此外,開啓字符串只在Java 1.7以後才起作用,但是否則您將得到一個清晰的JSP編譯錯誤頁面,您沒有透露任何信息。 – BalusC

回答

1

嘗試使用int,而不是字符串:

<% 
    String mo = ""; 
    int month = Integer.parseInt("0"+request.getParameter("month")); 
    switch(month) { 
    case 1: mo = "January"; break; 
     ... 
    } 
%> 

<%=mo%> 
+0

0有什麼用? –

+0

getParameter()可以返回一個String數組或null。爲了強制使用字符串,使用強制轉換爲「」+來防止NPE。 0只是防止NAN或科學數字的嘗試。沒有真正的用武之地。最後,將所有例外減少到NFE。 –