原文地址: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中。你指定的包自动包含其所有的子包,因此不需要通过*号去做通配。具体示例如下:

阅读全文......

原文地址:https://stripesframework.atlassian.net/wiki/display/STRIPES/Exception+Handling

异常处理简介

Servlet规范的内建异常处理机制是有限的,对于处理Web应用产生的异常。具体来说,当异常发生时,它只能将请求转向到一个JSP或者一个文件,而不能指向一个servlet或者一个没有可执行代码的JSP。而这些就是Stripes的异常处理机制要去解决的。 Stripes大多数主要的接口都允许开发者抛出任何不想处理的异常。比如处理方法、验证方法等。调用所有抛出的异常,取决于你定义的异常处理策略:Stripes是不会强加给你的。也就说,Stripes的作者建议应该传递不能处理的异常,让Stripes框架帮你处理,而不是捕获、包装或者抛出异常。

阅读全文......

原文链接:https://stripesframework.atlassian.net/wiki/display/STRIPES/Display+Errors web应用几乎没有例外的会在某些点上生成一些验证错误信息,提示用户做错了什么,应该怎么样正确的去做。这些提示应该与你的应用UI策略一致,能明确的告诉用户如何去处理。下面介绍如何利用Stripes进行错误信息展示。

输出错误

Stripes提供若干输出验证错误信息的标签,这些标签是值得花时间通过阅读文档去了解的。主要的标签是stripes:erros。这个标签可以针对一个表单输出所有的验证错误信息或者仅仅输出一个表单指定域的错误信息。

阅读全文......

原文链接:https://stripesframework.atlassian.net/wiki/display/STRIPES/AJAX 如果你没有听说过Ajax那么你有可能还生活在穴居时代,因此这里我们不会去讲Ajax是什么。如果你真的需要了解,那么建议你点击这里。因为Ajax作为客户端技术,Stripes作为服务器端框架,所以这篇文档主要关注如何使用Ajax技术与Stripes进行交互。如果你关注的是客户端视觉效果和一些Ajax技巧,那么通过谷歌搜索你能得到比本文更好的说明。 有许多不同的方式可用来编写Ajax应用程序。基本上最容易想到的就是调用一些服务器端(或者只是获取静态内容)逻辑完成与屏幕上可见内容的交互而不用去刷新浏览器页面。更复杂(功能也更强大)的方法包括通过调用服务端返回如XML或者JSON结构化数据,然后客户端通过JavaScript进行一些复杂的操作。

阅读全文......

博客文章一直是托管在github上的,对于站点的开发也是基于jekyll进行的,不过之前是通过在Window系统上安装Ruby进行的。最近将操作系统切换到了linux,因此需要在linux下配置jekyll环境。说实在的真没有在Windows上点击exe程序进行安装那么舒服,安装过程中遇到了不少问题。不过还好,最后都一一解决了。

Ruby安装 1

Jekyll是基于Ruby的,因此在安装前需要先安装Ruby。然后通过 gem 进行jekyll安装。 可以通过软件管理中心或者apt-get命令直接安装Ruby,不过就算安装成功也无法使用最新的jekyll3,因为最新的jekyll3要求Ruby的版本必须在2.0以上。通过

阅读全文......