来看看 使用 ActionForm 这个主题,当时使用了一个静态表单网页:
* form.htm
<html>
<head><title>Login</title></head> <body> Please login:<p> <form name="userForm" action="/strutsapp/login.do" method="post"> username <input type="text" name="username"/><br> password <input type="password" name="password"/><p> <input type="submit"/> </form></body></html> 您可以将网页改为JSP网页,并使用Struts标签来撰写表单元件,例如:* form.jsp
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>< contentType="text/html; charset=Big5"%><html><head><title>Login</title></head><body> Please login:<p> <html:form action="/strutsapp/login.do" method="post" focus="username"> username <html:text property="username" size="20"/><br> password <html:password property="password" size="20"/><p> <html:submit/> </form></body></html> <html:form>指定的login必须在struts-config.xml中有定义,<html:text>与< html:password>会取出Action所搭配的ActionForm物件中对应的属性值,如果使用者填写的内容不正确而被送回表单页面,使用者将可以看到先前所填写的值,如果不想显示先前所填写的值,则将< html:text>与<html:password>的redisplay属性设定为false即可,这几个Struts标签必须与 Action物件及ActionForm物件搭配使用。
<html:form>
用来产生HTML表单标签,属性name可以指定所使用的ActionForm名称,如果没有指定,则自动匹配ActionMapping中的name属性,必须与<html:submit/>、<html:reset/>等表单相关标签使用,常用属性介绍如下:* action: 表单提交的URL
* enctype: 提交表单时所使用的内容编码,上传档案时设定 * multipart/form-data * focus: 指定focus的元素名称 * method: 表单提交的方式 * name: 使用的ActionForm名称 * scope: ActionForm作用范围 * type: ActionForm类型 * onreset: 表单被重置时呼叫的JavaScript * onsubmit: 表单被送出时呼叫的JavaScript
<html:text>、<html:password>
文字方块栏位与密码栏位,搭配<html:form>使用,如果<html:form>所使用的ActionForm有值,预设会显示在对应的栏位,当用属性如下:* property: 元素名称
* size: 显示的字数 * value: 元素初值 * redisplay: 是否显示ActionForm的值
<html:submit>、<html:reset>
表单的submit按钮,搭配<html:form>使用,常用属性如下:* property: 元素名称
* value: 按钮显示文字 * onclick: 按下按钮后呼叫的JavaScript 使用范例:<html:submit value="送出"/><html:reset value="重清"/>搭配 <bean:message> 标签与讯息资源档的写法:
<html:submit property="method"> <bean:message key="button.save"/></html:submit><html:submit property="method"> <bean:message key="button.preview"/></html:submit>