将保存在Servlet Context中的表单数据发布到另一个表单上的Radio Button中

时间:2011-11-01 04:35:00

标签: html jsp servlets

我有一个带有文本框和单选按钮的JSP / HTML表单。我在servlet上下文中保存表单中输入的数据。

然后我跳到具有相同表单的新jsp / html页面。现在我想将之前输入的值放回到这个新表单的字段中。

e.g。在文本字段中,用户输入“ABC”,将使用以下方式在新表单中发布:

<INPUT TYPE="text" NAME="mytext" ID="mytext" value="<%=mytext %>">

如何对以下内容执行相同操作:下拉字段,单选按钮字段,复选框字段。

我有一组单选按钮(例如,在搜索表单中,单选按钮值将“以”开头“或”包含“或”完全“。因此,三者中的一个将保存在servlet上下文中。如何重新发布在新形式中相同??

我的单选按钮组类似于:

<TD valign="middle" align="left" width="100%" NOWRAP>
    <INPUT type="radio" name="searchCriteria" id="searchCriteria" value="NAME_BEGINS" onfocus="onFocusNameBegins();"/><b>Begins With</b>
    <INPUT type="radio" name="searchCriteria" id="searchCriteria" value="NAME CONTAINS" onfocus="onFocusNameContains();"/><b>Contains</b> 
    <INPUT type="radio" name="searchCriteria" id="searchCriteria" value="NAME_IS" onfocus="onFocusNameIs();"/><b>Exact Match</b> 
</TD>

1 个答案:

答案 0 :(得分:1)

到目前为止,您只需在selected中设置<option>属性,以预先选择checked中的下拉选项值和<input type="radio|checkbox">属性,以预先检查收音机按钮或复选框值。

假设您的初始表单如下所示:

<form action="next.jsp" method="post">
  <input type="text" name="text" />
  <select name="dropdown">
    <option value="one">One</option>
    <option value="two">Two</option>
    <option value="three">Three</option>
  </select>
  <input type="radio" name="choice" value="one" />
  <input type="radio" name="choice" value="two" />
  <input type="radio" name="choice" value="three" />
  <input type="submit" />
</form>

然后你可以在EL中按${param.fieldname}重新显示它们,如下所示:

<form action="next.jsp" method="post">
  <input type="text" name="text" value="${fn:escapeXml(param.text)}" />
  <select name="dropdown">
    <option value="one" ${param.dropdown == 'one' ? 'selected' : ''}>One</option>
    <option value="two" ${param.dropdown == 'two' ? 'selected' : ''}>Two</option>
    <option value="three" ${param.dropdown == 'three' ? 'selected' : ''}>Three</option>
  </select>
  <input type="radio" name="choice" value="one" ${param.choice == 'one' ? 'checked' : ''}/>
  <input type="radio" name="choice" value="two" ${param.choice == 'two' ? 'checked' : ''}/>
  <input type="radio" name="choice" value="three" ${param.choice == 'three' ? 'checked' : ''}/>
  <input type="submit" />
</form>

请注意,我在那里添加了fn:escapeXml(),您可以在其中重新显示用户控制的HTML内联输入。否则你只是在创建一个主要的XSS攻击漏洞。旧式 Scriptlets 和标准Java SE API都没有内置的XML转义功能来防止XSS攻击。

另见: