2014-09-26 36 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