当一个Web Dynpro组件实例创建时,默认视图也会创建相应的实例对象。如果不是组件的默认视图,则它会在指向它的导航请求触发时创建实例对象,直到窗口关闭或者有其他的页面切换请求被触发。
从J2EE的角度考虑,Web Dynpro的视图组件开发可以看成是对JSP或Servlet的封装。该组件在服务端执行并生成可以在客户端浏览执行的HTML源文件,人们对视图的开发就演变成对JSP的高级开发,更多的图形界面元素是基于可定制与模板化,并伴随着代码的自定义生成。视图有其生命周期,视图中有一些方法在其生命周期的不同阶段点会执行。
整个视图生命周期中可能会执行到的标准方法如下。
●wdDoInit():这是所有控制器(包括组件控制器和视图控制器)的默认初始化方法,且在实例初始化时仅执行一次,因此对于视图中屏幕元素的初始化或者变量的默认值设定都在这个方法中完成。
●wdDoExit():与wdDoInit()相对,该方法在每个控制器结束时执行。视图的退出场景有很多,包括视图失效、窗口关闭、视图切换等。该方法也是每个控制器实例的出口。
●wdDoModifyView():该方法在视图实例初始化以及运行中视图的页面UI元素产生事件触发时执行。由于这个方法与视图页面UI元素直接相关,因此仅在视图控制器(View的Java代码)中存在,组件控制器中没有这个方法。该方法的默认参数为firstTime,布尔型,用于标记屏幕是第一次创建还是属于重绘;如需求有动态绘制UI元素等内容,创建动态元素的代码就在wdDoModifyView方法中编写,也可根据情况编写部分初始化代码。需要注意的是,由于每次UI控件事件的触发都会执行该方法,该方法在视图的整个生命周期中执行频率最高,因此除了表格的过滤与排序等必要的需求场景外,并不建议在wdDoModifyView()中编写过多代码。为了避免破坏MVC的设计理念,SAP也将这个方法限制为静态类型。
●wdDoBeforeAction():该方法在界面控件的Action事件触发前执行。一般情况下,数据有效性校验会在wdDoBeforeAction中编写,校验会直接指向页面元素指针,若校验通过Action,则继续执行;若校验失败,则抛出异常并且页面元素显示红色,程序中断。
项目开发人员需要特别注意方法执行顺序:
在视图初始化时,先执行wdDoInit()方法,后执行wdDoModifyView()方法。
在触发视图的界面UI控件的事件后,先执行wdDoBeforeAction(),然后执行控件事件,最后执行wdDoModifyView()方法。
开发实例:
1)从刚刚新建的视图切换到Java编辑器视图中,选择“Outline”选项卡中的“wd⁃DoInit()”初始化方法,如图3-3所示。
图3-3 Java编辑器中的初始化方法
2)在wdDoInit()方法中加入以下代码:
wdComponentAPI.getMessageManager().reportSuccess("Init");
3)在wdDoExit()方法中加入以下代码:
logger.infoT("Exit");
4)在wdDoModifyView中加入以下代码:
wdComponentAPI.getMessageManager().reportSuccess("modifyView");(www.daowen.com)
5)在wdDoBeforeAction中加入以下代码:
wdComponentAPI.getMessageManager().reportSuccess("BeforeAction");
6)完成代码工作后,需要对程序进行编译。右击“Web Dynpro”,在弹出的快捷菜单中选择“Development Component”→“Build”命令,如图3-4所示。
7)部署:右击“Web Dynpro”,在弹出的快捷菜单中选择“Development Component”→“Deploy”命令,如图3-5所示。
8)接着运行部署后的应用程序,右击“Applications”中的应用程序,在弹出的快捷菜单中选择“Run”,如图3-6所示。由于一个Web Dynpro工程允许存在一个或多个程序,因此在运行时需正确选择程序,同样在门户创建页面时也需要注意。
图3-4 编译Web Dynpro项目
图3-5 部署Web Dynpro项目
图3-6 运行应用程序
9)运行后,程序将在浏览器中自动打开,上方是在Web Dynpro工程视图中创建的按钮,下方是默认的消息区域,如图3-7所示。
图3-7 运行后的效果
10)单击“Button”按钮后的效果如图3-8所示。
图3-8 单击“Button”按钮后的效果
从执行的结果可以看出,初始化先打印了wdDoInit方法中的消息内容,然后打印了wd⁃DoModifyView方法中的消息内容。当触发Button Action时(即单击按钮时),先打印wdDo⁃BeforeAction方法中的消息内容,然后打印Action方法中的消息内容,最后打印wdDoModify⁃View方法中的消息内容。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。