视图

1.概念

视图是对用户执行某个操作时候最终所展现的视图的配置。一般来说,可能是一个JSP页面,也可能是一个freemarker模板,等等。用户请求某个操作时,会根据这个配置来决定向用户展示什么。这个模型在metawork中的实体类是:net.lingdot.metawork.core.entity.meta.View。

2.属性

属性名称 含义 备注
name 视图名称  
metaEntity 所属元实体 表明是这个实体类型的视图
operation 对应操作 表明是这个操作的视图
type 类型 可能是JSP、freemarker等等
descriptor 描述符 一般来说是页面相对于web根路径的相对路径,例如/metawork/system/user-edit.jsp
viewData 视图数据 视图展示的时候所需要的附加数据

3.初始化

系统初始化的时候,会为通用列表建立通用视图,指向页面/metawork/common/list.jsp。

4.使用规则

仅仅在用户请求*.xhtml这样形式的URL的时候,会使用这里配置的视图,如果请求的是json或者xml格式的返回结果,那么忽略视图配置。

5.关于默认值

如果用户请求执行某个操作,但系统中没有配置该操作对应的视图,那么最终会跳转到"实体的folder属性值/实体别名-操作别名.jsp"。例如请求机构的编辑操作,会自动调转到/metawork/system/organization-edit.jsp。

6.关于视图数据

视图数据就是展现视图的时候所需要的附加数据。典型的应用场景是某个实体的编辑视图中,有一个下拉框,其中需要用到的一些数据。这些数据与操作无关,也与当前操作的实体没有多大关系,其实就是视图本身的一种属性。配置方式举例如下:

<?xml version="1.0" encoding="UTF-8"?>
<viewdata>
	<data id="categories" function="documentCategory">
		<conditions>
			<field name="name" operator="ne" value="客户留言"/>
		</conditions>
	</data>
	<data id="operations" function="operation"/>
</viewdata>

根节点是viewdata,其下每一个data节点都有一个id属性,值需要唯一,含义就是组视图数据。data节点的function属性指定获取这些数据需要使用的功能(其实是为了确定数据范围)。另外,data节点可以有conditions子结点,来更加细化的限制数据范围。这个conditions节点内部的语法和数据范围的配置语法一样,也是通用查询提供的查询条件描述方式。

在具体的视图中,可以使用形如viewData.categories这样的表达式来使用视图数据。实际上,系统中有一个ViewDataInitializeInterceptor,会将相关的视图数据放到action实例的一个叫做viewData的Map类型的属性里面。例如视图中可以这样写:

<s:select name="entity.defaultOperation.id" listKey="id" 
      listValue="fullName" list="viewData.operations" label="默认操作"></s:select>
团队
Group: Lingdot
Allan Zhang (allanz)
guyan6644@163.com
Jonney Xian (jonney)
jonney_82@163.com
亚运 祝 (zhuyy)
zhuyy0825@163.com
刘 洛麒 (llq667)
llq667@gmail.com
孙 海龙 (sunhl)
sunny.hl@163.com
宋颂 (ssong)
ss0070@163.com
张盈盈 (zyy200411)
04281118@bjtu.edu.cn
振强 许 (xuzz)
handstandboy2008@163.com
牛 俊力 (niujl)
05272140@bjtu.edu.cn
胡文锦 (cattyjin)
07122053@bjtu.edu.cn
苏 哲 (billy)
mvpierce34@gmail.com

标签

 
(没有)