TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
通常在包含表单的JSP页面上部创建bena,如下所示:
<jsp:useBean id="form" class="beans.Form" scope="request">
<jsp:setProperty name="form" property="*" />
</jsp:useBean>
如果将jsp:setProperty标记的property属性指定为"*",bean的所有属性将会设置成JSP页面输入的所有请求参数,不过在Bean中的属性的名字必须和Request对象中的参数名一致。
当再次显示某个表单时(如登录页页),通常希望表单元素能够保持其原来的输入值不变,这样用户就不用再为这些表单元素输入相应的值了。利用下面类似的方法可以使表单元素的值保持不变:
<input type="text" size=15 name="firstName" value="<%=request.getParameter("firstName") %>">
但这样实现有一个缺点,如果表单元素没有相应的请求参数,就像表单最开始显示的那样, ServletRequest.getParameter将返回null,下面是解决的一种方法:在bean中判断用户在表单中是否有输入值。
jsp页面如下:
<HTML><title>保存表单状态 </title>
<body>
<jsp:useBean id="form" class="beans.Form" scope="request">
<jsp:setProperty name="form" property="*"/>
</jsp:useBean>
<form>
Name:<input type="text" name="name" value="<%=form.getName()%>" /><p>
<input type="radio" name="credit" value="visa" <%= form.creditSelectionAttr("visa") %>>visa <input type="radio" name="credit" value="mc"
<%= form.creditSelectionAttr("mc") %>>master card<br> <input type="radio" name="credit" value="disc"
<%= form.creditSelectionAttr("disc") %>>discovery <input type="radio" name="credit" value="amex"
<%= form.creditSelectionAttr("amex") %>>american express </p><p><textarea name="comments" cols="25"
rows="5"><%= form.getComments() %></textarea> </p><p><input type="submit"/></p>
</form> <%@ include file="showForm.jsp" %> </body></html> 上面的showForm.jsp代码如下:
<b>name: </b> <%= form.getName() %><br>
<b>comments: </b> <%= form.getComments() %><br>
<b>credit: </b> <%= form.getCredit() %></p> 最后是bena的原代码:WEB-INF/classes/beans/Form.java
package beans; public class Form {
String name, comments = "Enter comments", credit; public void setName(String s) { name = s; }
p ublic String getName() { return name != null ? name : ""; } public void setComments(String s) { this.comments = s; }
public String getComments() { return comments; } public void setCredit(String s) { credit = s; }
public String getCredit() {
return credit != null ? credit : "";
} public String creditSelectionAttr(String creditName) {
i f(credit != null) {
return credit.equals(creditName) ? "checked" : "";
}
return "";
}
}
源码下载:http://file.javaxxz.com/2014/10/1/182317000.zip |
|