STRUTS中显示器(VIEWER)管理

开发viewer层时,开始拿到的时一个系统的UI原型。当我们把它们切割成一个个tile碎片时,这些tile都不能被直接访问了,那么就应该把它们放到/WEB-INF目录下,将它们隐藏起来。然后通过tile定义文件为每一个逻辑的画面(下文称显示器)进行定义。

 

       规则:每个显示器(viewer)必须要命名,命名规则采用package方式。例如/WEB-INF/xxx/yyy/filename.jsp的文件在tiles中的命名为xxx.yyy.filename

 

显示器分为两种: 可直接访问型;不可直接访问型;

类型显示器,若需要存在控制器来为页面显示的数据做一些准备工作。因该由显示器主动知道要用哪个控制器。控制器的命名为[com.name.tiles.controls.xxx.yyy.filename]。这样根据页面就能轻松找到它的控制器了。控制器在tiles定义页面时通过controlClass指定。

接下来考虑,浏览器需要怎样的链接方式?由于在原型UI中这些页面的地址是/xxx/yyy/filename.html。以前我的做法是使用dispatcheAction类,访问地址是dispatch.do?def=xxx.yyy.filename 。哦,看看不觉得有点糟糕么。但是如果我以这种地址/xxx/yyy/filename.page访问,这样感觉轻松多了,至少我能过根据这个链接一下子可以找到对应在/WEB-INF/xxx/yyy/filename.jsp的文件了,再也不要查找tiles定义文件了(如果你的项目有多个配置文件,相信你会头晕)。这样更直观了,不是吗?同时这也保证了每个页面的访问都经由控制器,这很重要。相信你还会发现这种方式还会带来其他的好处。

怎么去实现?这一点不难,只是通过一个小小的诡计而已。我们可以建立的一个servlet,让它匹配以.page后缀的URL,然后转发到类似dispatch.do?def=xxx.yyy.filenameURL就可以了。

类型显示器,这些显示器在页面链接中是不存在访问链接的,它们都是经由控制器转发的,所以控制器负责这些转发规则信息,那么它们总是应该通过在tiles中的定义名字来被访问的。很简单,只要将forword的地址写成tile的定义的名字就好了。

 

看看我们到目前为止只是做了个简单的规则和一个servlet而已。这些简单的工作会给我们带来好处么?

当项目的页面和配置文件很多而且由多人同时开发时,相信你会喜欢上文内容的。
阅读更多
个人分类: java
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭