📄 building_view.html
字号:
<html:errors/>
<html:form action="/logon" focus="username">
<table border="0" width="100%">
<tr>
<th align="right">
<html:message key="prompt.username"/>
</th>
<td align="left">
<html:text property="username"
size="16"/>
</td>
</tr>
<tr>
<th align="right">
<html:message key="prompt.password"/>
</th>
<td align="left">
<html:password property="password"
size="16"/>
</td>
</tr>
<tr>
<td align="right">
<html:submit>
<bean:message key="button.submit"/>
</html:submit>
</td>
<td align="right">
<html:reset>
<bean:message key="button.reset"/>
</html:reset>
</td>
</tr>
</table>
</html:form>
</body>
</html:html>
</pre>
<hr>
<p>
根据上面的例子,下面描述了Struts里form处理的关键特性:
</p>
<ul>
<li><code>taglib</code>指令告诉JSP页面编译器如何去寻找关于Struts标签库的<i>标签库描述</i>。在这里,我们用<code>bean</code>作为表示struts-bean标签库的前缀代号,而"html"是struts-html的前缀代号。你可以用任何你希望使用的前缀。</li>
<li>这个页面使用了几个message 来从包含这个程序所有可用资源的<code>MessageResources</code>对象中查找国际化信息串。下列文本关键字必须在资源文件中定义,这个页面才能正常工作:
<ul>
<li><b>logon.title</b> - logon 页面的标题</li>
<li><b>prompt.username</b> - "Username:" 询问用户名的标签</li>
<li><b>prompt.password</b> - "Password:" 询问密码的标签</li>
<li><b>button.submit</b> - "Submit" "提交表单"的按钮的标签</li>
<li><b>button.reset</b> - "Reset" "重置"按钮的标签</li>
</ul>
当用户登录的时候,程序会在用户的session中保存一个<code>Locale</code>对象。这个<code>Locale</code>对象会被用来选择合适的语言信息。这样让用户自己选择语言会变得很容易——简单的改变这个保存的<code>Locale</code>对象,所有的文本都会自动切换。</li>
<li>错误标签显示任何保存在商业逻辑部件中的可能的错误信息,如果没有错误,那么就不显示。关于这个标签,下面会详细讨论。</li>
<li>根据指定的属性,form标签展开为一个HTML <code><form></code>元素。它也让所有在这个form内部的字段值被存放到一个session范围的FormBean中去,它在session中的关键字是<code>logonForm</code>。Struts开发者会给出关于这个form bean的Java实现,它是一个Struts类<code>ActionForm</code>的字类。这个bean用来给出所有的输入字段的初始值,只要字段名和bean的属性名一致。如果合适的bean没有找到,会自动用指定的Java类名字来创建一个新的。
<li>这个formbean也需要在Struts配置文件中指明。这里名字和类型可以被省略。参阅"<a href="building_controller.html#config">Action Mappings (动作映射)配置文件</a>"得到详细信息。</li>
</li>
<li>Text标签展开成为HTML里的<code><input></code>元素,它的类型是"text"。在这里,在浏览器中显示时占据多少个字符空间也被指明了。当这个页面被执行的时候,对应的bean的<code>username</code>属性的值会被作为初始值(就是<code>getUsername()</code>的返回值)。</li>
<li>password 标签用起来很简单。不同之处是当用户输入自己的密码时浏览器会显示星号而非用户输入值。</li>.
<li>submit和reset标签生成form中对应的按钮。其上的标签文字是用message 标签生成的,所以它们显示的是国际化的字符串。</li>
</ul>
<p>
处理multipart form也是很简单的。显而易见,当你编写一个multipart form的时候你创建的form中具有至少一个"file"类型的input输入框。编写一个multipart的form的第一步是使用struts-html标签库来创建显示页面:
</p>
<hr>
<pre>
<%@page language="java">
<%@taglib uri="/WEB-INF/struts-html.tld"
prefix="html">
<html:form action="uploadAction.do">
Please Input Text:
<html:text property="myText"><br/>
Please Input The File You Wish to Upload:<br/>
<html:file property="myFile"><br />
<html:submit />
</html:form>
</pre>
<hr>
<p>
下一步是创建你的ActionForm bean:
</p>
<hr>
<pre>
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
public class UploadForm extends ActionForm {
protected String myText;
protected FormFile myFile;
public void setMyText(String text) {
myText = text;
}
public String getMyText() {
return myText;
}
public void setMyFile(FormFile file) {
myFile = file;
}
public FormFile getMyFile() {
return myFile;
}
}
</pre>
<hr>
<p>
在<a href="../api/index.html">Javadocs</a>里查阅FormFile可以看到在文件上传时它提供的处理文件的方法。也要看Javadoc里面的ActionServlet 和ActionMapping的不同的参数,你可以指定它们来指明文件如何上传。基本上你在你的Action类的perform()方法中需要调用<code>((UploadForm) form).getMyFile()</code>得到你的文件并且做出你的处理。
</p>
</blockquote></td></tr></table><a name="form_input"></a><table width="100%" cellpadding="5" cellspacing="5" border="0"><tr><td bgcolor="#023264"><font size="+1" face="arial,helvetica,sanserif" color="#ffffff"><strong>3.3.2 支持的Input 字段的类型</strong></font></td></tr><tr><td><blockquote>
<p>
下面列出了Struts定义的所有的input字段的类型,带有指向手册的连接。
</p>
<ul>
<li><a href="../struts-html.html#checkbox">checkboxes </a>选择框</li>
<li><a href="../struts-html.html#hidden">hidden fields </a>隐藏字段</li>
<li><a href="../struts-html.html#password">password</a> 密码输入框</li>
<li><a href="../struts-html.html#radio">radio</a> 单选框</li>
<li><a href="../struts-html.html#reset">reset</a> 重置按钮</li>
<li><a href="../struts-html.html#select">select</a> 列出内值的选择条目(下拉选择框)</li>
<li><a href="../struts-html.html#option">option</a>备选条目</li>
<li><a href="../struts-html.html#options">options</a>备选条目</li>
<li><a href="../struts-html.html#submit">submit</a> 提交按钮</li>
<li><a href="../struts-html.html#text">text</a> 单行文本输入框</li>
<li><a href="../struts-html.html#textarea">textareas</a> 多行文本输入框</li>
</ul>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -