﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-繁花落尽终是一场梦~~~欢迎来到吴现峰的JAVA开发专栏-文章分类-JavaWeb框架</title><link>http://www.blogjava.net/victorwuxianfeng/category/6679.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 01 Mar 2007 12:15:56 GMT</lastBuildDate><pubDate>Thu, 01 Mar 2007 12:15:56 GMT</pubDate><ttl>60</ttl><item><title>Struts提供的和Form相关的标签祥解</title><link>http://www.blogjava.net/victorwuxianfeng/articles/27974.html</link><dc:creator>吴现峰</dc:creator><author>吴现峰</author><pubDate>Fri, 13 Jan 2006 14:01:00 GMT</pubDate><guid>http://www.blogjava.net/victorwuxianfeng/articles/27974.html</guid><wfw:comment>http://www.blogjava.net/victorwuxianfeng/comments/27974.html</wfw:comment><comments>http://www.blogjava.net/victorwuxianfeng/articles/27974.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/victorwuxianfeng/comments/commentRss/27974.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/victorwuxianfeng/services/trackbacks/27974.html</trackback:ping><description><![CDATA[<P>在本文中我讲述了如何使用Struts提供的form相关的标签。</P>
<P>&nbsp;</P>
<P>与form相关的标签包括&lt;form&gt;标签本身以及所有必须包含在其中的标签。比如，&lt;text&gt;和&lt;password&gt;标签就是和form相关的标签，因为如果不把它们放到一个form中它们就没有意义。</P>
<P>&nbsp;</P>
<P>&lt;form&gt;标签<BR>&lt;form&gt;标签用于生成一个HTML form。使用该标签时必须遵循许多规则。</P>
<P>&nbsp;</P>
<P>首先，&lt;form&gt;标签中必须包含一个action属性，它是这个标签中唯一必需的属性。如果不具备该属性则JSP页面会抛出一个异常。之后你必须给这个action属性指定一个有效值。一个有效值是指应用程序的Struts配置文件中&lt;action-mappings&gt;元素里的任何一个&lt;action&gt;子元素的访问路径。而且相应的&lt;action&gt;元素中必须有一个name属性，它的值是form bean的名称。</P>
<P>&nbsp;</P>
<P>例如，如果你有这样一个&lt;form&gt;标签：&nbsp;&nbsp; &lt;html:form action="/login" &gt; </P>
<P>&nbsp;</P>
<P>那么你的Struts配置文件的&lt;action-mappings&gt;元素中必须有一个如下显示为粗体的&lt;action&gt;元素： <BR>&nbsp; &lt;action-mappings&gt; <BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;action path="/login" <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type="com.javapro.struts.LoginAction"&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name="loginForm"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scope="request"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; input="/login.jsp"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;forward name="success" path="/mainMenu.jsp"/&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/action&gt;<BR>&nbsp;&nbsp;&nbsp; .<BR>&nbsp;&nbsp;&nbsp; .<BR>&nbsp;&nbsp;&nbsp; .<BR>&nbsp; &lt;/action-mappings&gt;<BR>这就是说一个form标签是和form bean相关联的。</P>
<P>&nbsp;</P>
<P>另一个要遵循的规则是：任何包含在&lt;form&gt;中用来接收用户输入的标签（&lt;text&gt;、&lt;password&gt;、&lt;hidden&gt;、&lt;textarea&gt;、&lt;radio&gt;、&lt;checkbox&gt;、&lt;select&gt;）必须在相关的form bean中有一个指定的属性值。比如，如果你有一个属性值被指定为“username”的&lt;text&gt;标签，那么相关的form bean中也必须有一个名为“username”的属性。输入&lt;text&gt;标签中的值会被用于生成form bean的userName属性。</P>
<P>&nbsp;</P>
<P>除了上面所讲的属性之外，&lt;form&gt;标签还有一些不是必须但加上更好的“次要”的属性。比如，你可以用focus属性来生成JavaScript，它会“定焦”（focus）到该form所包含的一个元素上。使用focus属性时你需要给它指定元素的名称。比如，以下代码是定焦在第二个Text元素上的： &lt;body&gt;<BR>&lt;html:form action="/login" focus="password"&gt;<BR>User Name: &lt;html:text property="userName"/&gt;<BR>&lt;br&gt;Password: &lt;html:text property="password"/&gt;<BR>&lt;br&gt;&lt;html:submit/&gt;<BR>&lt;/html:form&gt;<BR>&lt;/body&gt;<BR>该段代码会被转换成： <BR>&lt;body&gt;<BR>&lt;form name="loginForm" method="post" <BR>&nbsp;&nbsp; action="/myStrutsApp6/login.do"&gt;<BR>User Name: &lt;input type="text" name="userName" <BR>&nbsp;&nbsp; value=""&gt;<BR>&lt;br&gt;Password: &lt;input type="text" <BR>&nbsp;&nbsp; name="password" value=""&gt;<BR>&lt;br&gt;&lt;input type="submit" <BR>&nbsp;&nbsp; value="Submit"&gt;<BR>&lt;/form&gt;<BR>&lt;script language="JavaScript" <BR>&nbsp;&nbsp; type="text/javascript"&gt;<BR>&nbsp; &lt;!--<BR>&nbsp;if (document.forms["loginForm"].elements[<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "password"].type != "hidden") <BR>&nbsp;&nbsp;&nbsp; document.forms["loginForm"].elements[<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "password"].focus()<BR>&nbsp; // --&gt;<BR>&lt;/script&gt;</P>
<P>&nbsp;</P>
<P>&lt;/body&gt;<BR>注意，&lt;form&gt;标签中method属性的缺省值是POST。另外，有没有看到这个标签库是如何建立JavaScript来定焦到password元素上的? 这也是该库让人着迷的地方之一。你不用担心如何在客户端进行编程，它会帮你自动生成。</P>
<P>&nbsp;</P>
<P>在运行前面的例子时还要注意，你必须有一个包含userName和password属性的相关form。你可以参考本文第三部分中的Login程序。</P>
<P>&nbsp;</P>
<P>&lt;text&gt;标签<BR>&lt;text&gt;标签用于生成一个文本的输入区域。它必须包含和相关form bean中的相同属性对应的“property”属性。该标签只有在嵌入到一个&lt;form&gt;标签中时才有效。<BR>例如： &lt;html:text property="userName"/&gt;<BR>会被转换成： &lt;input type="text" name="userName" value=""&gt;</P>
<P>&nbsp;</P>
<P>&lt;password&gt;标签<BR>&lt;password&gt;标签用于生成一个口令字（type password）的输入区域。它必须包含和相关form bean中的相同属性对应的“property”属性。该标签只有在嵌入到一个&lt;form&gt;标签中时才有效。该标签中的一个很重要的属性是“redisplay”，它用于重新显示以前输入到这个区域中的值。该属性的缺省值为true。然而，为了使password不能被重新显示，你或许希望将该属性的值设为false。<BR>例如： &lt;html:password property="password" redisplay="false"/&gt;<BR>会被转换成: &lt;input type="password" name="password" value=""&gt;</P>
<P>&nbsp;</P>
<P>&lt;hidden&gt;标签<BR>&lt;hidden&gt;标签用于生成一个隐藏文本的输入区域。它必须包含和相关form bean中的相同属性对应的“property”属性。该标签只有在嵌入到一个&lt;form&gt;标签中时才有效：<BR>例如： &lt;html:hidden property="userName"/&gt;<BR>会被转换成: &lt;input type="hidden" name="userName" value=""&gt;</P>
<P>&nbsp;</P>
<P>&lt;textarea&gt;标签<BR>&lt;textarea&gt;标签用于生成一个文本区元素（text area element）。它必须包含和相关form bean中的相同属性对应的“property”属性。</P>
<P>&nbsp;</P>
<P>比如：<BR>&lt;html:textarea property="details" cols="80" rows="20" value="Enter details here"/&gt;<BR>会被转换成： <BR>&lt;textarea name="details" cols="80" rows="20"&gt;Enter details here&lt;/textarea&gt;</P>
<P>&nbsp;</P>
<P>&lt;radio&gt;标签<BR>&lt;radio&gt;标签用于显示一个单选按钮（radio button）。它必须包含“value”属性。比如这段代码： &lt;html:radio property="title" value="1"/&gt;Mr.<BR>&lt;html:radio property="title" value="2"/&gt;Ms.<BR>&lt;html:radio property="title" value="3"/&gt;Dr.<BR>会被转换成这样的HTML： <BR>&lt;input type="radio" name="title" value="1"&gt;Mr.<BR>&lt;input type="radio" name="title" value="2"&gt;Ms.<BR>&lt;input type="radio" name="title" value="3"&gt;Dr.</P>
<P>&nbsp;</P>
<P>&lt;checkbox&gt;标签<BR>&lt;checkbox&gt;标签用于显示checkbox类型的输入区域。比如： <BR>&lt;html:checkbox property="notify"/&gt;Please send me notification<BR>会被转换成： <BR>&lt;input type="checkbox" name="notify" value="on"&gt;Please send me notification</P>
<P>&nbsp;</P>
<P>&lt;submit&gt;标签<BR>&lt;submit&gt;标签用于生成提交类型（type submit）的输入区域。<BR>比如： &lt;html:submit value="Login"/&gt;<BR>会被转换成： &lt;input type="submit" value="Login"&gt;<BR>&nbsp;</P>
<P>&nbsp;</P>
<P><BR>&lt;reset&gt;标签<BR>&lt;reset&gt;标签用于生成重置类型（type reset）的输入区域。比如： <BR>&lt;html:reset/&gt;<BR>会被转换成： &lt;input type="reset" value="Reset"&gt;</P>
<P>&nbsp;</P>
<P>&lt;option&gt;标签<BR>&lt;option&gt;标签用于显示select box中的一个选项。参照下面的&lt;select&gt;标签。</P>
<P>&nbsp;</P>
<P>&lt;select&gt;标签 <BR>&lt;select&gt;标签用于显示一个包含零个或更多选项的HTML选择元素。它必须被嵌入一个&lt;form&gt;标签中才有效。下面这个例子将说明如何使用该标签： &lt;html:select property="color" size="3"&gt;<BR>&nbsp; &lt;html:option value=<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "r"&gt;red&lt;/html:option&gt;<BR>&nbsp; &lt;html:option value=<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "g"&gt;green&lt;/html:option&gt;<BR>&nbsp; &lt;html:option value=<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "b"&gt;blue&lt;/html:option&gt;<BR>&lt;/html:select&gt;</P>
<P>&nbsp;</P>
<P>会被转换成： <BR>&lt;select name="color" size="3"&gt;&lt;option <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value="r"&gt;red&lt;/option&gt;<BR>&nbsp; &lt;option value="g"&gt;green&lt;/option&gt;<BR>&nbsp; &lt;option value="b"&gt;blue&lt;/option&gt;<BR>&lt;/select&gt;<BR>&nbsp;</P><img src ="http://www.blogjava.net/victorwuxianfeng/aggbug/27974.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/victorwuxianfeng/" target="_blank">吴现峰</a> 2006-01-13 22:01 <a href="http://www.blogjava.net/victorwuxianfeng/articles/27974.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>