BEA WebLogic Workshop使用笔记之三Web应用篇Word文件下载.docx
《BEA WebLogic Workshop使用笔记之三Web应用篇Word文件下载.docx》由会员分享,可在线阅读,更多相关《BEA WebLogic Workshop使用笔记之三Web应用篇Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
该部分可以由CustomControl文件(*.jcs),JavaControl文件(*.jcx),WebService文件(*.jws)或Process文件(*.jpd)等文件装配而成。
视图(ViewV)
由*.jsp等文件来实现
控制器(ControllerC)
由JavaPageFlow文件(*.jpf)来实现
关于Pageflow的更多信息请参考dev2dev中文站点上的这篇文档:
BEAWorkshop8.1之JavaPageFlow介绍byDougDew,JavaPageFlow项目经理
建立Pageflow
我们在上一章中建好的EJBTest项目上继续Web应用的开发,右键点击EJBTest项目,选择"
new"
一个"
PageFlow"
在DesignView中将index.jsp页面删除,只留下Begin按钮,然后将myControl控件的"
finderByCompanyName"
方法拓展到DesignView中,它将在这个Pageflow中成为一个带FormBean的action"
,同时这个FormBean也显示在FormBeans选项版中(FormBean是PageFlow中的数据的承载体,其一个作用是用于页面中的form提交时存储form中的数据,其实质是一个JavaBean)
右键点击刚生成的action,选择"
GenerateInputPage"
选项,Workshop将根据你action的FormBean的参数,自动生成一个输入页面finderByCompanyNamePage.jsp。
我们调整一下它们的位置,并且从Begin节点拉一条连接线,使得Begin开始后的PageFlow走到finderByCompanyNamePage.jsp页面。
这个PageFlow开始后将走到一个输入页面finderByCompanyNamePage.jsp,让你输入finderByCompanyName需要的数据,获得数据后,将到"
action中处理。
EJB控件myControl的finderByCompanyName()方法返回的是一个EJB对象的引用,我们对其做部分处理,使得它能返回Company中的全部信息("
NO"
及"
COMPANY_NAME"
),在PageFlow中传递数据的方法有很多中比如用Request、Session、FormBean等等进行数据的传递,在本例中我们为这个Pageflow增加两个Public的String型变量"
sNO"
、"
sCompanyName"
用来承载"
COMPANY"
信息。
关于PageFlow的传值的更多相关信息请读者阅读相关文档:
∙dev2dev中文站点的《数据绑定101》这篇文档
∙Workshop联机帮助文档DevelopingWebApplicationsà
GuidetoBuildingPageFlowsà
UsingDataBindinginPageFlows部分(在Workshop中按F1出联机文档,或是直接访问
然后在Pageflow中,双击"
节点,进入"
SourceView"
编辑器,更改finderByCompanyName()方法,将
myControl.finderByCompanyName()方法的返回的CompanyNO和CompanyName赋值给相应的变量。
publicclassInvokeEJBPFControllerextendsPageFlowController
{
/**
*Thisisthecontrolusedtogeneratethispageflow
*@common:
control
*/
privateTEJBmyControl;
publicStringsNO;
publicStringsCompanyName;
……….
*@jpf:
action
forwardname="
success"
path="
showCompanyInfo.jsp"
protectedForwardfinderByCompanyName(FinderByCompanyNameFormform)
SIMPLEEJB.Simple_exsBean;
try
{
sBean=myControl.finderByCompanyName("
%"
+form.getArg0()+"
);
this.sNO=sBean.getCompanyId();
this.sCompanyName=sBean.getCompanyName();
}
catch(Throwablet)
t.printStackTrace();
}
returnnewForward("
);
"
action处理完后我们需要一个页面把这个处理结果显示出来,所以,从"
Pallete"
面板中拖拽出一个"
page"
到设计视图中,并命名为"
双击这个showCompanyInfo.jsp页面,进入这个页面的编辑界面,我们需要对其加入部分定制代码段来显示出finderByCompanyName处理的结果。
1.删除默认jsp页面上的文字;
2.从"
选项板"
中拖拽"
表格"
到空白的jsp页面上,设置表格属性为4行2列;
3.使用"
表导航器"
合并表头,和表尾;
4.往表的6个表格中拖拽入"
Label"
标签
5.对上诉table中的label值在属性编辑器中设定,由上至下,由左至右设定成:
CompanyInfo
NO:
{pageFlow.sNO}
CompanyName:
{pageFlow.sCompanyName}
{pageFlow.sNO}"
是一段表达式,"
pageFlow"
代表了对这个jsp所处的PageFlow对象的引用,"
是这个对象的一个属性值,这对大括号的作用的是表明"
pageFlow.sNO"
应当做为一个表达式来处理,而不是做为一个值来被直接显示。
6.对这个JSP页面加上返回连接,使得点击后它能返回主页面,通过拖拽的方式从"
Anchor"
标签到设计视图中,如下图设置属性,定位方式选中"
调用某个操作"
,文本属性是这个标签的显示文字"
return"
,操作属性的意思是这个"
标签会调用PageFlow中的那个操作,我们选择"
begin"
,表明调用PageFlow开始节点。
7.点击保存,回到PageFlow页面,我们运行这个PageFlow进行测试。
PageFlow的相互调用
在Workshop中开发PageFlow的相互调用也很简单,在接下来的创建CreateCompanyPageFlow的过程中将为读者演示PageFlow调用的开发。
1.右键点击"
EJBTest"
项目,选择"
新建"
页面流"
,然后起名为"
CreateCompany"
,删除无用的"
index.jsp"
,只留下"
Begin"
节点,然后将TEJB.jcx控件从"
应用程序"
面板中拖拽到DesignView中
数据选项板"
tEJB"
控件的"
create"
方法到设计视图中来,它将生成一个"
action,再右键点击这个"
action,选择"
生成输入页"
,入下图
3.将"
节点和新生成的"
createPage.jsp"
页面间联线关联起来。
然后再把我们刚建立好的PageFlowInvokeEJBPFController.jpf给拖拽进这个PageFlow中来,如下图
4.右键点击新拖拽进入的"
InvokeEJBPF"
节点,选择"
生成调用操作"
,再从"
节点和"
页面节点上拉出连线链接到新的"
show_invokeEJBPF"
节点上,如下图
5."
页面出现红色波浪线表明该页面上有错误,这个错误其实是因为我们还没有在页面上加连接到"
节点上的连接,所以报错,因而我们需要修改createPage.jsp页面,往其中加一个"
ReturnHome"
按钮,使其能返回主页面。
6.再看这个CreateCompanyController.jpf,一切都ok,我们可以运行并测试它。
该EJB剩下的两个方法(FinderByNO()方法和FinderAll()方法)请读者自己练习,最后做成的PageFlow如下:
源码参见本文附的下载包。
小结
笔者期望读者通过本文的阅读及练习能够入门在BEAWebLogicWorkshop上的WebApp应用开发。
在下一篇使用笔记中,作者将给大家介绍如何用Workshop开发一个调用该PageFlow的Portal应用,敬请关注。
相关源文件请点击此处下载