我通过以下代码预先选择我的单选按钮。以下输入包装在一个回发到同一个servlet的表单中。
buf.append("<input type=\"radio\" name=\"FTNAME\" value=\""+ FTNAME+ "\" " + (FTNAME.equals("Arial") ? "checked=\"checked\"" : "") + ">Arial      ");
buf.append("<input type=\"radio\" name=\"FTNAME\" value=\""+ FTNAME+ "\" " + (FTNAME.equals("Serif") ? "checked=\"checked\"" : "") + ">Serif      ");
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 :(得分:1)
是的:我的建议是你最好阅读你的servlet生成的HTML代码。您会发现所有三个无线电都具有相同的值。
答案 1 :(得分: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")
总是会给你返回值“Arial”。你需要改成这样的东西
buf.println("<input type=\"radio\" name=\"FTNAME\" value=\"Arial\"" + (FTNAME.equals("Arial") ? "checked=\"checked\"" : "") + ">Arial      ");
buf.println("<input type=\"radio\" name=\"FTNAME\" value=\"Serif\""+ (FTNAME.equals("Serif") ? "checked=\"checked\"" : "") + ">Serif      ");
buf.println("<input type=\"radio\" name=\"FTNAME\" value=\"SansSerif\""+ (FTNAME.equals("SansSerif") ? "checked=\"checked\"" : "") + ">SansSerif <br><br>");