⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 building_view.html

📁 Struts中文文档
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<html><head><META http-equiv="Content-Type" content="text/html; charset=GB2312"><meta content="Craig R. McClanahan" name="author"><meta content="Xiaogang Cao" name="translator">
<title>Struts 用户指南 - 构造 View(视图) 部件</title></head><body vlink="#023264" alink="#023264" link="#023264" text="#000000" bgcolor="#ffffff"><table cellspacing="5" width="100%" border="0"><tr><td colspan="2"><a href="http://jakarta.apache.org"><img border="0" align="left" src="../images/jakarta-logo.gif"></a><img border="0" align="right" src="../images/struts.gif"></td></tr><tr><td colspan="2"><hr></td></tr><tr><td valign="top" width="120">

    <title>Struts 用户指南</title>

    <table cellspacing="5" border="0"><tr><th align="left" colspan="2"><font color="#023264"><strong>快速连接</strong></font></th></tr>
      <tr><td width="15" align="center"></td><td><font size="-1"><a href="../index.html">Home</a></font></td></tr>
      <tr><td width="15" align="center"></td><td><font size="-1"><a href="index.html">目录</a></font></td></tr>
      <tr><td width="15" align="center"></td><td><font size="-1"><a href="introduction.html">简介</a></font></td></tr>
      <tr><td width="15" align="center"></td><td><font size="-1"><a href="building_model.html">Model 部件</a></font></td></tr>
      <tr><td width="15" align="center"></td><td><font size="-1"><a href="building_view.html">View 部件</a></font></td></tr>
      <tr><td width="15" align="center"></td><td><font size="-1"><a href="building_controller.html">Controller 部件</a></font></td></tr>
      <tr><td width="15" align="center"></td><td><font size="-1"><a href="resources.html">资源</a></font></td></tr>
      <tr><td width="15" align="center"></td><td><font size="-1"><a href="volunteers.html">我们是谁</a></font></td></tr>
    </table>

</td><td valign="top"><body>  
  <a name="building_view"></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. 构造 View (视图)部件</strong></font></td></tr></table><a name="overview"></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.1 纵览</strong></font></td></tr><tr><td><blockquote>
        
        <p>
        这一章关注构造程序的View(视图)部件的任务,主要是由JavaServer Pages(JSP)技术完成的。特别的,Struts提供对编写国际化程序的支持,同时也支持和(用户)输入的Form交互。其他几个和View(视图)有关的主题也会被简要的涉及。
      </p>
      
    </blockquote></td></tr></table><a name="i18n"></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.2 Internationalized Messages</strong></font></td></tr><tr><td><blockquote>
      
      <p>
      几年前,程序开发者们只期望支持他们自己国家的国民,只使用一种(有时候是两种)语言,也只有一种表达日期,数字,钱币的格式。然而,基于Web技术的,在internet和其他一些可以被广泛访问的网络上的程序开发有了爆炸性的增长,让国界问题浮现在我们的眼中。这个问题被理解为对于支持<i>国际化</i>(经常被称为i18n,因为在"国际化"一词internationalization中i和n之间有18个字母)和<i>本地化</i>程序的需要。
      </p>
        
      <p>
      Struts 在Java平台上编写,可以辅助支持编写国际化和本地化的程序。需要熟悉的概念有:
      </p>
      
      <ul>
        <li><b>Locale (国籍,地区)</b> - 支持国际化的最基本的Java类是<code>java.util.Locale</code>。每一个<code>Locale</code>表示一个特定的国家和语言(包括一种可选的不同语言),和一套对于数字,日期之类的字符串的格式化方案。</li>
        <li><b>ResourceBundle (资源包)</b> - <code>java.util.ResourceBundle</code>类提供了支持不同语言的信息的基本支持。参阅<code>ResourceBundle</code>的Javadoc和在你的JDK版本中的国际化支持的信息来得到进一步的帮助。</li>
        <li><b>PropertyResourceBundle (属性资源包)</b> - 一个<code>ResourceBundle</code>的标准实现,它允许你用和properties文件一样的"name=value"的格式来定义资源。这对于在web程序中准备信息资源宝石很方便的,因为大部分的信息都是文本。</li>
        <li><b>MessageFormat (信息格式)</b> - <code>java.text.MessageFormat</code> 类允许你在运行时用参数的方式替代一个信息字符串(在这种情况下,是从reousece bundle中取出的)。有时候你要编写一个句子,但是在不同的语言中词语出现的顺序不一样,这就很有用了。字符串中的占位符<code>{0}</code>会被第一个运行时参数取代,<code>{1}</code>会被第二个取代,其它的也是这样。</li>
        <li><b>MessageResources (信息资源)</b> - Struts类<code><a href="api/org/apache/struts/util/MessageResources.html">org.apache.struts.util.MessageResources</a></code>让你把一套resource bundle当成数据库,允许你得到某种特定的Locale(一般是当前用户的Locale)中的特定信息字符串,而非服务器自己正在使用的Locale。</li>
      </ul>
        
      <p>
      请注意在一个Struts之类的框架中i18n的支持只限于<b>显示</b>国际化的字符串和图像给用户。支持地区相关的<b>输入法</b>(在日语,中文,或者韩文之类的语言中使用)被留给客户端设备,一般是一个web浏览器。
      </p>

      <p>
      对于一个国际化程序来说,请遵循JDK中附带的国际化文档中描述的步骤来为你的平台创建每一种语言的properties文件。下面的例子更深入的说明这一点:
      </p>
        
      <p>
      假设你的源代码位于<code>com.mycompany.mypackage</code>包,所以它保存在<code>com/mycompany/mypackage</code>目录中(相对于你的源代码目录)。要创建一个名为<code>com.mycompany.mypackage.MyResources</code>的资源包,你应该在<code>com/mycompany/mypackage</code>下创建下列文件:
      </p>
    
      <ul>
        <li><b>MyResources.properties</b> - 包含了使用你的服务器所在的语言的文本。如果你的默认语言是英语,你可能会有如下的条目:
            <code>prompt.hello=Hello</code></li>
        <li><b>MyResources_xx.properties</b> - 包含了ISO代码为"xx"的语言的文本(参阅ResourceBundle的Javadoc得到最新的代码列表)。对于一个上面所示文本的法语版本,你可能会有如下的条目:
            <code>prompt.hello=Bonjour</code>
            你可以编写所以你愿意支持的语言的资源包。</li>
      </ul>
        
      <p>
      当你配置你web程序中controller servlet的发布描述时,你需要定义的一个国际化参数是程序的基本资源包的名字。在我们上面举的例子中,它就是<code>com.mycompany.mypackage.MyResources</code>。
      </p>
<pre>
&lt;servlet&gt;
  &lt;servlet-name&gt;action&lt;/servlet-name&gt;
  &lt;servlet-class&gt;org.apache.struts.action.ActionServlet&lt;/servlet-class&gt;
  &lt;init-param&gt;
    &lt;param-name&gt;application&lt;/param-name&gt;
    &lt;param-value&gt;com.mycompany.mypackage.MyResources&lt;/param-value&gt;
  &lt;/init-param&gt;
  &lt;.../&gt;
&lt;/servlet&gt;
</pre>
     
      <p>
      一件重要的事情是要让你的资源包在你程序可以访问的class path中。另一个方法是把<code>MyResources.properties</code>放在你的程序的<code>classes</code>目录下,你就可以简单的用“myResource”作为程序的值。但是要注意如果你的编译脚本为了保证一个“干净”的编译目标,会删除整个classes目录,这时要保证这个资源文件不被删除。
      </p>
      <p>
      如果是这种情形,这儿有一段Ant任务可以包含在你的编译脚本中,它把<code>src/conf</code>目录中的内容拷贝到<code>classes</code>目录去。
      </p>
       <pre>
        &lt;!-- Copy any configuration files --&gt;
        &lt;copy todir="classes"&gt;
            &lt;fileset dir="src/conf"/&gt;
        &lt;/copy&gt;
       </pre>
    </blockquote></td></tr></table><a name="form_beans"></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 Forms 和 FormBean 的交互</strong></font></td></tr><tr><td><blockquote>    
      <p>
      以前,大多数web开发者使用标准的HTML能力来编写Forms,比如使用<code>&lt;input&gt;</code>标签。用户希望和程序互动,产生某种特定的行为,其中之一和错误处理有关——如果用户犯了个错误,程序应该允许他们改正需要改正的地方——而非重新填写页面上所有的字段。
      </p>
        
      <p>
      使用标准的HTML和JSP页面来满足这种需求是非常繁琐和粗笨的,举个例子,一个<code>username</code>字段的输入框可能是这样的(在JSP里):
       </p>
      
<pre>
&lt;input type="text" name="username"
      value="&lt;%= loginBean.getUsername() %&gt;"/&gt;
</pre>
      
      <p>
      如果HTML程序员并没有编程基础知识的话,这很难输入正确,而且也会对页面编辑者带来麻烦。基于JSP1.1中的自定义标签库,Struts为编写form提供了很大的方便,可以取代原始的方法。上面的例子用Struts来编写的话会是这样:
      </p>

<pre>
&lt;html:text property="username"/&gt;
</pre>

      <p> 
      并不需要显式的引用一个JavaBean以取得初始值。框架自动完成这些事情。
      </p>
      <p>
      HTML form有时候被用来上传一些文件。大部分浏览器通过&lt;input type="file"&gt; 元素来支持这一点,它会显示一个浏览文件的按钮,但是(在Server端--译者注)下面就轮到开发者来处理这些(上传)来的文件了。Struts可以用和普通的form一致的方式来处理这些"multipart" form.在下一节里,我们会谈到用Struts来创建一个简单的login页面,还包括一个简单的multipart form。
      </p>   
      </blockquote></td></tr></table><a name="forms"></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.1 在Struts里编写Form </strong></font></td></tr><tr><td><blockquote>
        
        <p>
        一个完整的login页面有助于展示Struts如何用比直接的HTML和标准JSP方式更轻松的方式来处理form。考虑如下的页面(基于Struts附带的示例程序),名字是<code>logon.jsp</code>:
        </p>       
<hr>
<pre>
&lt;%@ page language="java" %&gt;
&lt;%@ taglib uri="/WEB-INF/struts-html.tld"
        prefix="html" %&gt;
&lt;%@ taglib uri="/WEB-INF/struts-bean.tld"
        prefix="bean" %&gt;
&lt;html:html&gt;
&lt;head&gt;
&lt;title&gt;
  &lt;bean:message key="logon.title"/&gt;
&lt;/title&gt;
&lt;body bgcolor="white"&gt;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -