通常在包含表单的JSP页面上部创建bena,如下所示:
如果将jsp:setProperty标记的property属性指定为'*',bean的所有属性将会设置成JSP页面输入的所有请求参数,不过在Bean中的属性的名字必须和Request对象中的参数名一致。
当再次显示某个表单时(如登录页页),通常希望表单元素能够保持其原来的输入值不变,这样用户就不用再为这些表单元素输入相应的值了。利用下面类似的方法可以使表单元素的值保持不变:
<input type='text' size=15 name='firstName' value='<%=request.getParameter("firstName") %>'>
但这样实现有一个缺点,如果表单元素没有相应的请求参数,就像表单最开始显示的那样,
ServletRequest.getParameter将返回null,下面是解决的一种方法:在bean中判断用户在表单中是否有输入值。
jsp页面如下:
<input type='radio' name='credit' value='visa' <%= form.creditSelectionAttr("visa") %>>visa
<input type='radio' name='credit' value='mc'
master card
<input type='radio' name='credit' value='disc'
discovery
<input type='radio' name='credit' value='amex'
american express
<textarea name='comments' cols='25'
<%= form.getComments() %></textarea>
<input type='submit'/>
<%@ include file='showForm.jsp' %>
</body>
上面的showForm.jsp代码如下:
name: <%= form.getName() %>
comments: <%= form.getComments() %>
credit: <%= form.getCredit() %>
最后是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 "";
}
}
↑返回目录
前一篇: Jsp自定义标记入门程序:制作登录界面
后一篇: 用jsp读远程文件,保存到本地