我有一个带有文本框和单选按钮的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>
答案 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攻击。