原文地址:https://stripesframework.atlassian.net/wiki/display/STRIPES/Unit+Testing

这篇文档介绍两种主要的方式用来测试ActionBeans和与之关联的外部容器类,比如Tomcat,Resin或者Jetty。要决定哪种方式适合你,应该大概去了解下两者。这不是用一个方案就可以解决所有问题的,你可能需要在你的项目中同时使用这两种技术。

但是首先,让我们先说明一些事情……

  1. 自动化测试是一件好事情。自动化测试可以让你方便的对代码进行重构,直到写出更高质量的代码。
  2. 我不想通过哲学层面去说明单元测试的好与不好;但良好的可自动运行的测试是值得提倡的,这不关乎他们是否是技术性的单元测试。
  3. 有工具可以让你测试整个包含在常规servelt容器内渲染的JSP的周期;我发现这有一点像是努力工作并当可能的时候去测试我的外部容器1
  4. 对每个Stripes用户,我个人比较推荐使用TestNG。它要比JUnit先进,如果你有做过任何的单元测试,那么TestNG的上手时间也就大概15分钟。

阅读全文......

原文地址:https://stripesframework.atlassian.net/wiki/display/STRIPES/State+Management

这篇文档有两个主要部分:

  1. 使用ActionBeanContext进行状态管理
  2. 使用FlashScope进行POST请求后重定向

状态管理

这一节我们将介绍如何在保证类型安全和ActionBean类可测试的情况下,去访问HttpSessionCookies和其他HttpServletRequest/Response行为。关键点就在于提供一个自己ActionBeanContext子类。

ActionBeanContext子类

阅读全文......

原文地址:https://stripesframework.atlassian.net/wiki/display/STRIPES/Localization

本地化是越来越多的网站必须处理的事情。本地化从来都不是不容易的,但是Stripes尽量让其做起来简单。这篇文档我们将覆盖以下内容:

  • 选择使用的语言环境
  • 选择使用的字符编码
  • 寻找本地化资源
  • 本地化验证
  • 本地化错误信息
    • 在自定义代码中使用本地化错误信息
  • 本地化按钮和标签
  • 传递本地化变量到布局
  • 本地化的其他事情

选择使用的语言环境

构建一个本地化应用可能面临的第一个挑战是针对指定的请求使用哪一个本地化设置。因为有可能你支持的语言和区域不止一个。当用户提交请求,该请求可以包含用户首选语言环境的有序列表。因此你不得不基于支持的语言环境,以及用户首选的语言环境去选择为用户服务的语言环境。

阅读全文......

原文地址:https://stripesframework.atlassian.net/wiki/display/STRIPES/Spring+with+Stripes

Stripes是一个web应用框架,它被设计成易于使用并能提升开发人员的开发效率。Spring是一个主要的轻量级组件容器(当然现如今它也包含了其它的一些功能),同样,它也被设计成易于使用并且也能提升开发效率。那么很自然的,你可能想将两者结合起来使用。

集成了Spring的Stripes使得你的ActionBean类可以访问被配置成Spring bean形式的Spring资源。要这么做,只需要将Spring bean注入到ActionBean中即可。为此,你需要完成一些配置,一旦配置完成,就可以在Stripes web应用中使用Spring bean而无需任何其他XML配置。

安装配置Spring

阅读全文......

原文地址:https://stripesframework.atlassian.net/wiki/display/STRIPES/Indexed+Properties

这篇如何做将涉及如何使用数字索引和字符索引映射属性。定义数字索引是有点困难的,但可以用示例很容易展示出来。试想下,如果想要在页面上编辑一些关于bug的信息,那么可以通过一个包含像 “bug.name”, “bug.description”, “bug.priority”等信息域的表单来完成该操作。现在,如果需要在一个页面一次编辑多个bug,那么可以写许多包含类似”bug1.name”, “bug2.name”的域属性在一个表单中(同样ActionBean中一样)。但是这样做太费事了。此时可以考虑使用Stripes定义的符号(和其他工具类似)并用类似 bug[0].name和 bug[1].name的方式来替换表单域。

为完成上述功能还有两个方面需要考虑:如何在表单内生成域字段名和如何在ActionBean中去接收他们。其实,这两者都是很简单的。

JSP中的数字索引属性

阅读全文......

原文地址:https://stripesframework.atlassian.net/wiki/display/STRIPES/Layout+Reuse

几乎所有的web应用程序都不止一个页面。但大多数情况所有的页面(或者针对每个页面子集使用不同的布局)都有基本相同的主题或者布局。因此常规的通用处理方式是编写如下的JSP页面:

使用include标签进行简单的布局复用

<jsp:include page="/nav/header.jsp"/>
...
<jsp:include page="/nav/context.jsp"/>
My page content here
<jsp:include page="/nav/footer.jsp" />

阅读全文......

原文地址:https://stripesframework.atlassian.net/wiki/display/STRIPES/Intercept+Execution

Stripes设计了拦截器系统,这样可以很容易的为其添加功能。对于交叉性的请求行为,编写拦截器比起扩展Stripes已有组件功能要简单的多。

下面是Stripes生命周期和其拦截系统的核心类:

  • LifecycleStage是一个枚举类,用来描述一个请求处理的不同阶段。更多的关于生命周期详细细节可参看这里
  • Interceptor是一个接口类,其定义了拦截器的接口方法
  • Intercepts是一个注解,用来注解拦截器在那个阶段被拦截
  • ExecutionContext包装了所有和ActionBean调用有关的上下文内容,并将其提供给拦截器

拦截器示例

阅读全文......

原文地址:https://stripesframework.atlassian.net/wiki/display/STRIPES/File+Uploads

表单中使用文件上传标签

使用Stripes是很容易实现文件上传的。最简单的方式就是Stripes的表单域中添加一个文件域,然后在ActionBean中使用FileBean对象去表示该文件属性即可。比如:

在JSP页面中使用文件域

<stripes:form>
    ...
    <stripes:file name="newAttachment"/>
    ...
</stripes:form>

阅读全文......

原文地址:https://stripesframework.atlassian.net/wiki/display/STRIPES/FreeMarker+with+Stripes

这份文档主要提供对那些已经熟悉FreeMarker框架并想将其与Stripes集成的帮助。因此这里不打算去介绍FreeMarker本身,因为FreeMarker自身已有了优秀的说明文档

FreeMarker配置

首先第一步是去下载FreeMarker。强烈建议使用FreeMarker2.3.8及其以上版本。从2.3.8开始,FreeMarker新增了一些对未支持JSP标签的支持以便实现完全支持JSP 2.0标签库。由于Stripes的一些标签依赖JSP 2.0 API,因此如果使用低版本的FreeMarker会导致其无法正常工作。

阅读全文......

原文地址:https://stripesframework.atlassian.net/wiki/display/STRIPES/Extensions

扩展-如何扩展和定制Stripes

从Stripes1.5开始,在web.xml中可以配置一个或多个包,Stripes将会自动加载所有扩展。这些扩展包含:

在web.xml中添加一个叫做Extension.Packages的初始化参数变量到StripesFilter中。你指定的包自动包含其所有的子包,因此不需要通过*号去做通配。具体示例如下:

阅读全文......