jsf.docx
- 文档编号:6824716
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:56
- 大小:39.70KB
jsf.docx
《jsf.docx》由会员分享,可在线阅读,更多相关《jsf.docx(56页珍藏版)》请在冰豆网上搜索。
jsf
JSF系列教程(四)导航规则设置
[日期:
2008-07-04]来源:
作者:
志伟
在JSF中是根据faces-config.xml中
....
....
对于JSF,每一个视图(View)都有一个独特的识别(identifier),称之为ViewID,在JSF中的ViewID是从Web应用程式的环境相对路径开始计算,设定时都是以/作为开头,如果您请求时的路径是/pages/index.faces,则JSF会将副档名改为/pages/index.jsp,以此作为view-id。
来源:
作者:
志伟
在
您还可以在
....
....
....
在导航时,预设都是使用forward的方式,您可以在
....
....
....
JSF系列教程(四)导航规则设置
[日期:
2008-07-04]来源:
作者:
志伟
您的来源网页可能是某个特定模组,例如在/admin/下的页面,您可以在
....
....
....
在上面的设定中,只要来源网页是从/admin来的,都可以开始测试接下来的
....
....
....
或者是这样:
....
....
....
JSF系列教程(五)JSF表达试语言(JSFExpressionLanguage)
[日期:
2008-07-05]来源:
作者:
志伟
JSF系列教程(五)JSF表达试语言(JSFExpressionLanguage)
JSFExpressionLanguage搭配JSF标籤来使用,是用来存取资料物件的一个简易语言。
JSFEL是以#开始,将变数或运算式放置在Unknownmacro:
{与}之间,例如:
#{someBeanName} 变数名称可以是faces-config.xml中定义的名称,如果是Bean的话,可以透过使用'.'运算子来存取它的属性,例如:
...
view> outputTextvalue="#{userBean.name}"/>
view>
...
在JSF标籤的属性上,"与"(或'与')之间如果含有EL,则会加以运算,您也可以这麽使用它:
...
view> 名称,年龄: outputText value="#{userBean.name},#{userBean.age}"/>
view>
...
一个执行的结果可能是这样显示的:
名称,年龄:
Justin,29 EL的变数名也可以程式执行过程中所宣告的名称,或是JSFEL预设的隐含物件,例如下面的程式使用param隐含物件来取得使用者输入的参数:
<%@tagliburi="prefix="f"%>
<%@tagliburi="prefix="h"%>
<%@pagecontentType="text/html;charset=Big5"%>
view> 您好, outputTextvalue="#{param.name}"/>
view>
param是JSFEL预设的隐含物件变数,它代表request所有参数的集合,实际是一个java.util.Map型态物件,JSF所提供的隐含物件,大致上对应于JSP隐含物件,不过JSF隐含物件移除了pageScope与pageContext,而增加了facesContext与view,它们分别对应于javax.faces.context.FacesContext与ponent.UIViewRoot。
对于Map型态物件,我们可以使用'.'运算子指定key值来取出对应的value,也可以使用[与]来指定,例如:
...
view> 您好, outputTextvalue="#{param['name']}"/>
view>
...
在[与]之间,也可以放置其它的变数值,例如:
...
view> outputTextvalue="#{someBean.someMap[user.name]}"/>
view>
...
如果变数是List型态或阵列的话,则可以在[]中指定索引,例如:
....
view> outputTextvalue="#{someBean.someList[0]}"/> outputTextvalue="#{someBean.someArray[1]}"/> outputText value="#{someBean.someListOrArray[user.age]}"/>
view>
....
您也可以指定字面常数,对于true、false、字串、数字,JSFEL会尝试进行转换,例如:
....
outputTextvalue="#{true}"/> .... outputTextvalue="#{'Thisisatest'}"/> .... 如果要输出字串,必须以单引号'或双引数"括住,如此才不会被认为是变数名称。 在宣告变数名称时,要留意不可与JSF的保留字或关键字同名,例如不可取以下这些名称: truefalsenulldivmodandornoteqneltgtlegeinstanceofempty 使用EL,您可以直接实行一些算术运算、逻辑运算与关係运算,其使用就如同在一般常见的程式语言中之运算。 算术运算子有: 加法(+),减法(-),乘法(*),除法(/ordiv)与馀除(%ormod)。 下面是算术运算的一些例子: 运算式结果 #{1}1 #{1+2}3 #{1.2+2.3}3.5 #{1.2E4+1.4}12001.4 #{-4-2}-6 #{21*2}42 #{3/4}0.75 #{3div4}0.75,除法 #{3/0}Infinity #{10%4}2 #{10mod4}2,也是馀除 #{(1==2)? 3: 4}4 如同在Java语法一样(expression? result1: result2)是个三元运算,expression为true显示result1,false显示result2。 逻辑运算有: and(或&&)、or(或! ! )、not(或! )。 一些例子为: 运算式结果 #{trueandfalse}false #{trueorfalse}true #{nottrue}false 关係运算有: 小于Less-than( =orne),由英文名称可以得到lt、gt等运算子之缩写词,以下是Tomcat的一些例子: 运算式结果 #{1<2}true #{1lt2}true #{1>(4/2)}false #{1>(4/2)}false #{4.0>=3}true #{4.0ge3}true #{4<=3}false #{4le3}false #{100.0==100}true #{100.0eq100}true #{(10*10)! =100}false #{(10*10)ne100}false 左边是运算子的使用方式,右边的是运算结果,关係运算也可以用来比较字元或字串,按字典顺序来决定比较结果,例如: 运算式结果 #{'a'<'b'}true #{'hip'>'hit'}false #{'4'>3}true EL运算子的执行优先顺序与Java运算子对应,如果有疑虑的话,也可以使用括号()来自行决定先后顺序。 JSF系列教程(六)JSF国际化编码支持(JSFInternational) JSF国际化(Internnationalization)讯息处理是基于Java对国际化的支援,您可以在一个讯息资源档中统一管理讯息资源,资源档的名称是.properties,而内容是名称与值的配对,例如: messages.properties titleText=JSFDemo hintText=Pleaseinputyournameandpassword nameText=name passText=password commandText=Submit 资源档名称由basename加上语言与地区来组成,例如: *basename.properties *basename_en.properties *basename_zh_TW.properties 没有指定语言与地区的basename是预设的资源档名称,JSF会根据浏览器送来的Accept-Languageheader中的内容来决定该使用哪一个资源档名称,例如: Accept-Language: zh_TW,en-US,en 如果浏览器送来这些header,则预设会使用繁体中文,接着是美式英文,再来是英文语系,如果找不到对应的讯息资源档,则会使用预设的讯息资源档。 JSF系列教程(六)JSF国际化编码支持(JSFInternational) [日期: 2008-07-05]来源: 作者: 志伟 由于讯息资源档必须是ISO-8859-1编码,所以对于非西方语系的处理,必须先将之转换为JavaUnicodeEscape格式,例如您可以先在讯息资源档中写下以下的内容: messages_zh_TW.txt titleText=JSF示范 hintText=请输入名称与密码 nameText=名称 passText=密码 commandText=送出 然后使用JDK的工具程式native2ascii来转换,例如: native2ascii-encodingBig5messages_zh_TW.txtmessages_zh_TW.properties 转换后的内容会如下: messages_zh_TW.properties titleText=JSF\u793a\u7bc4 hintText=\u8acb\u8f38\u5165\u540d\u7a31\u8207\u5bc6\u78bc nameText=\u540d\u7a31 passText=\u5bc6\u78bc commandText=\u9001\u51fa 接下来您可以使用 loadBundle>标籤来指定载入讯息资源,一个例子如下: index.jsp index.jsp <%@tagliburi="prefix="f"%> <%@tagliburi="prefix="h"%> <%@pagecontentType="text/html;charset=UTF8"%> view> loadBundlebasename="messages"var="msgs"/> outputTextvalue="#{msgs.titleText}"/> form> outputTextvalue="#{msgs.hintText}"/> outputTextvalue="#{msgs.nameText}"/>: inputTextvalue="#{user.name}"/> outputTextvalue="#{msgs.passText}"/>: inputSecretvalue="#{user.password}"/> commandButtonvalue="#{mandText}" actionListener="#{user.verify}" action="#{user.outcome}"/> form> view> 如此一来,如果您的浏览器预设接受zh_TW语系的话,则页面上就可以显示中文,否则预设将以英文显示,也就是messages.properties的内容,为了能显示多国语系,我们设定网页编码为UTF8。 view>可以设定locale属性,直接指定所要使用的语系,例如: viewlocale="zh_TW"> loadBundlebasename="messages"var="msgs"/> 直接指定以上的话,则会使用繁体中文来显示,JSF会根据 loadBundle>的basename属性加上 view>的locale属性来决定要使用哪一个讯息资源档,就上例而言,就是使用messages_zh_TW.properties,如果设定为以下的话,就会使用messages_en.properties: viewlocale="en"> loadBundlebasename="messages"var="msgs"/> 也可以在faces-config.xml中设定语系,例如: ..... 在 当然,如果您可以提供一个选项让使用者选择自己的语系会是更好的方式,例如根据user这个Bean的locale属性来决定页面语系: viewlocale="#{user.locale}"> loadBundlebasename="messages"var="msgs"/> 在页面中设定一个表单,可以让使用者选择语系,例如设定单选钮: selectOneRadiovalue="#{user.locale}"> selectItemitemValue="zh_TW" itemLabel="#{msgs.zh_TWText}"/> selectItemitemValue="en" itemLabel="#{msgs.enText}"/> selectOneRadio> JSF系列教程(七)JSFBackingBeans [日期: 2008-07-05]来源: 作者: 志伟 JSF系列教程(七)JSFBackingBeans JSF使用JavaBean来达到程式逻辑与视图分离的目的,在JSF中的Bean其角色是属于BackingBean,又称之为GlueBean。 其作用是在真正的业务逻辑Bean及UI元件之间搭起桥樑,在BackingBean中会呼叫业务逻辑Bean处理使用者的请求,或者是将业务处理结果放置其中,等待UI元件取出当中的值并显示结果给使用者。 JSF将Bean的管理集中在faces-config.xml中,一个例子如下: .... onlyfun.caterpillar.UserBean .... 这个例子我们在第一个JSF程式看过, inputTextvalue="#{user.name}"/> 设定Bean的存活范围,您可以设定为request、session与application,设定为request时,Bean的存活时间为请求阶最。 设定为session则在使用者应用程式交互开始,直到关闭浏览器或显式的结束会话为止(例如登出程式),设定为application的话,则Bean会一直存活,直到应用程式关闭为止。 您还可以将存活范围设定为none,当设定为none时会在需要的时候生成一个新的Bean,例如您在一个method中想要生成一个临时的Bean,就可以将之设定为none。 在JSF页面上要取得Bean的属性,是使用JSF表示语言(ExpressionLanguage),要注意到的是,JSF表示语言是写成#{expression}。 而JSP表示语言是写成${expression},因为表示层可能是使用JSP,所以必须特别区分,另外要注意的是,JSF的标籤上之属性设定时,只接受JSF表示语言。 JSF系列教程(八)JSFBean的状态与设定 JSF预设会读取faces-config.xml中关于Bean的定义,如果想要自行设置定义档的名称,我们是在web.xml中提供javax.faces.CONFIG_FILES参数,例如:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- jsf