资源描述
,使用JSF导航,2,JSF应用程序的用户界面由页面设计人员设计。模型对象是由应用程序开发人员实现的开发一个JSF应用的步骤包括:开发模型对象、开发基于JSF用户界面、编写时间监听器或者导航规则JBulider提供的JSF开发工具包括:JSF创建向导、FacesConfig编辑器和JSP编辑器JSF通过从属性文件中提供特定于语言环境的数据来实现国际化,回顾,3,目标,静态导航动态导航,4,,,主页,,index.jsp,,,,J2SE(Core/Desktop),EarlyAccess,导航概念2-1,5,下一个页面取决于:当前显示页由UICommand组件action属性调用的操作导航规则中指出的结果字符串,导航概念2-2,,…….……………,网页,…….……………,…….……………,…….……………,网页,,,Web应用程序,,导航规则,,,在应用程序配置文件中定义各种导航规则,并将结果字符串与每个规则关联。将结果字符串用作JSF页面按钮或超链接的action属性值。,6,导航规则,/default.jspindex/index.jsp,,标识初始页,,标识一个导航块,from-outcome元素是navigation-rule中from-view-id子元素处理的结果,to-view-id元素为这个导航块指定目标页,,7,,,静态导航2-1,用户,download.jsp,请求,,导航处理程序,应用程序,…….……………,Web页面,…….……………,…….……………,固定的jsp页面,响应,Index.jsp,download.jsp,earlyaccess.jsp,download.jsp,8,静态导航2-2,通过按钮的action属性与导航规则中的from-outcome元素值匹配,,/login.jspwelcome/results.jsp,9,静态导航示例,,zhangsan,10,后台Bean,publicclassUser{privateStringname;publicvoidsetName(Stringname){this.name=name;}publicStringgetName(){returnname;}},11,视图页,欢迎请输入您的用户名:,Welcome.jsp,再见您的用户名是,欢迎下次访问!,Goodbye.jsp,12,导航规则配置,……/Welcome.jspsuccess/Goodbye.jsp/Goodbye.jspwelcome/Welcome.jsp……,faces-config.xml,演示:示例1,13,,,,xinfei1983,**********,xinfei1983,*********,,,动态导航2-1,14,动态导航2-2,将登录按钮与后台Bean的用户验证方法相关联,,StringverifyUser(StringuserName,Stringpassword){if(userName.equals("Tomcat")}},/login.jspsuccess/success.jspfailure/failure.jsp,,,,,用户验证方法,导航规则,15,动态导航示例,显示给用户一系列数学推理测试问题,,80,,113,当回答完最后一个题目时,公布最后得分,并邀请用户重新开始,16,Problem类描述了一个题目的问题和答案,以及检查特定答案是否正确的方法,后台Bean2-1,publicclassProblem{privateStringquestion;privateStringanswer;publicProblem(Stringquestion,Stringanswer){this.question=question;this.answer=answer;}publicStringgetQuestion(){returnquestion;}publicStringgetAnswer(){returnanswer;}publicbooleanisCorrect(Stringresponse){returnresponse.trim().equalsIgnoreCase(answer);}},,题目的问题,,题目的答案,,验证特定的答案是否正确,17,后台Bean2-2,QiuzBean类描述了包含很多题目的测验,还跟踪当前问题和用户的总得分,publicclassQuizBean{privateintcurrentProblem;privateintscore;privateStringresponse;privateStringcorrectAnswer;//在实际的应用程序中,可以从数据库中提取所有的问题privateProblem[]problems={newProblem("8,10,14,22,38","70"),newProblem("8,15,29,57","113"),newProblem("4/17,7/13,10/9","13/5"),newProblem("99,110,122,135","149"),newProblem("1,3,4,1,5","9")};publicQuizBean(){startOver();}publicStringgetQuestion(){returnproblems[currentProblem].getQuestion();}publicStringgetAnswer(){returncorrectAnswer;}publicintgetScore(){returnscore;}publicStringgetResponse(){returnresponse;}publicvoidsetResponse(StringnewValue){response=newValue;},publicStringanswerAction(){if(problems[currentProblem].isCorrect(response)){score++;nextProblem();if(currentProblem==problems.length){return"done";}else{return"success";}}else{nextProblem();if(currentProblem==problems.length){return"done";}else{return"failure";}}},publicStringstartOverAction(){startOver();return"startOver";}privatevoidstartOver(){currentProblem=0;score=0;response="";}privatevoidnextProblem(){correctAnswer=problems[currentProblem].getAnswer();currentProblem++;response="";}},18,视图页index.jsp,数学推理小测验,主测试页面,19,视图页failure.jsp,……答错了,答案错误页面,20,视图页success.jsp,数学推理小测验,答案正确显示下一个测试题目页面,21,视图页done.jsp,数学推理小测验,显示最后得分,并要求用户再玩一次页面,22,导航规则配置,……success/success.jspfailure/failure.jspdone/done.jsp,faces-config.xml,startOver/index.jspnext/index.jsp,演示:示例2,思考:为什么没有from-view-id?,23,总结,导航规则定义了如何在应用程序中从特定页面导航至另一个页面静态导航是单一的结果映射。在静态导航中,单击指定按钮总是选择固定的页面来呈现响应navigation-rule元素最重要的两个子元素是from-view-id和navigation-case。navigation-case元素最重要的两个子元素是from-outcome和to-view-id动态导航是多个结果映射要实现动态导航,按钮或链接必须有一个方法引用,以用于调用相应的方法,导航处理器根据方法返回的字符串来匹配导航规则,
展开阅读全文