ITPub博客

首页 > 应用开发 > IT综合 > Struts快速入门(四) (转)

Struts快速入门(四) (转)

原创 IT综合 作者:amyz 时间:2007-08-14 18:16:00 0 删除 编辑
Struts快速入门(四) (转)[@more@]

使用ActionForward导航XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

  ActionForward对象是配置对象。这些配置对象拥有独一无二的标识以允许它们按照有意义的名称如“success”,“failure”等来检索。ActionForward对象封装了向前进的URL路径且被请求处理器用于识别目标视图。ActionForward对象建立自元素位于struts-config.xml。下面是一个Struts中元素例子,属于元素范围。

type="packageName.EditCustomerProfileAction"

name="customerProfileForm" SCOpe="request">

JSP"/>

  基于执行请求处理器的execute(…)方法的结果,当传递一个值匹配指定于元素中name属性的值的时候,下一个视图可以在execute(…)方法中被开发者用方便的方法org.apache.struts.action.ActionMapping.findForward(…)选择。ActionMapping.findForward(…)方法既从它的本地范围又从全局范围提供一个ActionForward对象,该对象返回至RequestProcessor以RequestDispatcher.forward(…)或response.sendRedirect(…)调用下一个视图。当元素有redirect=“false”属性或redirect属性不存在的时候,RequestDispatcher.forward(…)被执行;当redirect=“true”是,将调用sendRedirect(…)方法。下例举例说明了redirect属性的用法:

   

在struts-config.xml中元素还提供另一个特性以控制元素的的name属性如何被解释。该元素用于联合元素中input属性,如下所示:

type="packageName.EditCustomerProfileAction"

name="customerProfileForm"

scope="request"

input="profile">

  上述的元素包含一个input属性及一个向前名称;该前进名称与中的相同。在上述的配置中,当ActionForm.validate(…)返回一个非空或非null的ActionErrors对象,RequestProcessor将选择元素,其name属性与元素的input属性拥有相同的值;除非用子类取代RequestProcessor,该行为是确认遇到错误的标准行为。对下面的元素声明,当ActionForm.validate(…)返回一个非空或非null的ActionErrors对象,input属性提供一个向前的URL以代替向前发生ActionForward的名称。在inputForward属性不存在时,这是默认的配置。

  前进指向特定的路径,如果路径中没有”/” 就加上。对于前进或重定向,Struts中的URL在内部被RequestProcessor用下面的结构建立。

如果redirect=true, URL建立如/contextPath/path因为HttpservletResponse.sendRedirect(…)中解释URL采用”/”开头相对于servlet容器根目录。

如果redirect=false, URI建立如/path因为ServletContext.getRequestDisptacher(…)采用虚拟目录相关URL。

捕获表单数据

  JSP规范提供了一个标准方法以在请求时从JavaBean提取和保存表单数据,使用和。然而这种方法导致了在表示层和JavaBeans间产生很强的耦合;此外HTML文档创作者不得不明白这种组件并且知道它们在页面中正确地用法。因为JavaBean可以被标签或被另一个服务器组件建立和放置在指定的范围,那样可能在不同的组件共享JavaBean中产生bean的生命周期管理问题。Struts提供一个机制以提取,保存和验证表单数据;同时它克服了和的缺点。下面是一对新的和元素。

 

  上述例子映射一个packageName.customerProfileForm类型JavaBean的name = customerProfileForm(唯一标识)到一个元素的name = customerProfileForm;请求处理器被提交请求的路径/editCustomerProfile唯一标识。该表单建立和使用的语义用下面的静态模型举例说明:

 

  图略

ASPectratio="t">

 

首先,我们将浏览这些表单处理语义直到使用简单JavaBeans对象。这些对象作为ActionForm对象被实现。我们随后将讨论使用DynaActionForm对象进行表单处理,可以在请求时支持属性的动态集合。

 


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10752019/viewspace-956542/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    3982
  • 访问量
    7895613