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值。