2014-09-26 73 views
0

我預先通過以下代碼選擇我的單選按鈕。以下輸入以回送到同一個servlet的形式進行包裝。Servlet檢索預先選定的單選按鈕

buf.append("<input type=\"radio\" name=\"FTNAME\" value=\""+ FTNAME+ "\" " + (FTNAME.equals("Arial") ? "checked=\"checked\"" : "") + ">Arial &nbsp &nbsp &nbsp"); 
buf.append("<input type=\"radio\" name=\"FTNAME\" value=\""+ FTNAME+ "\" " + (FTNAME.equals("Serif") ? "checked=\"checked\"" : "") + ">Serif &nbsp &nbsp &nbsp"); 
buf.append("<input type=\"radio\" name=\"FTNAME\" value=\""+ FTNAME+ "\" " + (FTNAME.equals("SansSerif") ? "checked=\"checked\"" : "") + ">SansSerif <br><br>"); 

但是,當我嘗試做

FTNAME = request.getParameter("FTNAME") == null ? "Arial" : request.getParameter("FTNAME"); //Arial as font name default 

讓我FTNAME,它總是返回它從上面的代碼,而不是我的新選擇集。

有什麼建議嗎?

回答

0

因爲您將所有三個單選按鈕的值設置爲Arial。所以無論你選擇什麼單選按鈕,它總是會返回給你。

這是你的HTML頁面會是什麼樣子:

<input type="radio" name="FTNAME" value="Arial" checked="checked"> 
<input type="radio" name="FTNAME" value="Arial"> 
<input type="radio" name="FTNAME" value="Arial"> 

你的servlet request.getParameter("FTNAME")會送花兒給人返回你的價值「宋體」。您需要更改此類內容

buf.println("<input type=\"radio\" name=\"FTNAME\" value=\"Arial\"" + (FTNAME.equals("Arial") ? "checked=\"checked\"" : "") + ">Arial &nbsp &nbsp &nbsp"); 
buf.println("<input type=\"radio\" name=\"FTNAME\" value=\"Serif\""+ (FTNAME.equals("Serif") ? "checked=\"checked\"" : "") + ">Serif &nbsp &nbsp &nbsp"); 
buf.println("<input type=\"radio\" name=\"FTNAME\" value=\"SansSerif\""+ (FTNAME.equals("SansSerif") ? "checked=\"checked\"" : "") + ">SansSerif <br><br>"); 
+0

我覺得自己像個白癡! – etlds 2014-09-27 02:16:22

1

是的:我的建議是,您最好閱讀由您的servlet生成的HTML代碼。你會發現所有三個收音機都有相同的價值。

+0

不,FTNAME是用戶輸入的參數。如果用戶選擇「Arial」,則只有Arial單選按鈕被選中,其他兩個按鈕的檢查狀態將爲空。我的問題是「Arial按鈕已經被以前的歷史記錄檢查過,如果我想選擇Serif,Arial的檢查狀態將保持不變,它如何返回一個新的值?」 – etlds 2014-09-27 01:00:25