Dorado 5 : c.ViewProperties (T1A)

ViewProperties是属于ViewModel对象的一个属性集合,该属性集合在一个View的整个生命周期中,我们无论在客户端通过JS代码还是在服务器端编程时通过Java代码都可以访问和存储的对象,我们都知道在BS编程中,服务器端与客户端是无法简单的保持状态的(HttpSession,Cache等特殊技术除外)。ViewModel提供了这个对象用以我们将一些状态信息保存在ViewProperties中,便于我们编程。
例如我们可以在一次AJAX请求之前通过JS代码将状态信息存储在ViewProperties中:

getViewModel().properties().addParameter("state", 2); 
commandRPC.execute();

在视图模型实现类中接收这个AJAX请求的时候,我们就可以通过ViewModel对象的properties()方法取出这个集合:

public void changeLanguage(ParameterSet parameters, ParameterSet outParameters) 
 throws Exception { 
	String state = this.properties().getString("state"); 
}

同样我们也可以在AJAX请求服务器端处理的代码中设定properties的值。并在客户端获取这个服务器端设定的值:

public void changeLanguage(ParameterSet parameters, ParameterSet outParameters) 
 throws Exception { 
	 String state = this.properties().getString("state"); 
	 this.properties().setString("state", "3"); 
}

客户端获取代码如下(只要将上述代码调整一下即可):

getViewModel().properties().addParameter("state", 2); 
commandRPC.setAsync(true); 
commandRPC.execute(function (success){ 
	 if (success){ 
	 	var returnState = getViewModel().properties().getValue("state"); 
	 } 
});

其中代码commandRPC.execute()用于执行dorado的AJAX请求,该AJAX请求结束时触发的function方法中,首先判断success返回值,如果成功则获取ViewProperties中的state值。

注意:关于ViewProperties的操作实际上与第四章中dorado上下文对象的VIEW作用域是相同的,DoradoContext针对View范围的操作就是存取ViewProperties集合。