All +
All -
messages
- + -本章阅读说明
- 1,第一步、第二步和第三步的内容适合于那些没有读过该案例之前的章节读者,建议其他读者直接从第四步开始阅读
- 2,这里的读书记录,偏重于该案例在书中想要说明的知识点,而不是把前面章节没有涉及的内容都作为新知识点
- 3,建议阅读者,能够对照第四步中的内容,写出该案例的功能设计说明书
- 4,建议阅读者,能够对照第五步中的内容,写出该案例的功能实现方案
- 5,建议阅读者,能够动手在NetBeans(或其他IDE)中将该案例从头做一遍
- 6,本人在读书时,使用了思维导图(FreeMind)工具,如果有阅读者需要原型文档的,可qq联系:1028637037
- 7,该书是由美国 David Geary 和 Cay Horstmann 合著,由王超翻译,由《清华大学出版社》出版。如果您需要下载案例,可到出版社网址去。
- + -第一步:创建案例
- 使用随书源码在NetBeans中创建项目
- + -第二步:运行案例
- 在IDE中运行该案例
- + -第三步:阅读案例结构
- Web
- 页面文件
- index.xhtml
- 资源文件夹resources
- 子文件夹css
- styles.css
- 子文件夹css
- 页面文件
- 源包
- java包com.corejsf
- UserBean.java
- messages.properties
- java包com.corejsf
- 库
- JDK 1.7
- GlassFish Server 3.1.2
- 配置文件
- beans.xml
- faces-config.xml
- web.xml
- Web
- + -第四步:阅读案例新功能
- + -第一层面:视图
- + -页面文件
- + -index.xhtml
- *窗口标题显示内容:Using h:messages and h:message
- 使用组件h:messages 和组件 h:message
- *页面标题显示内容:Please fill out the following information
- 请填写下列消息
- *文本“Name:”,对应一个“文本输入框”组件
- 供用户填写用户名
- *文本“Age”,对应一个“文本输入框”组件
- 供用户填写用户年龄
- *文本“Submit form”,是一个“按钮”组件
- 供用户提交表单用
- *窗口标题显示内容:Using h:messages and h:message
- + -index.xhtml
- + -页面文件
- 第二层面:控制
- 页面控制器
- UserBean
- *对应页面JSF HTML组件的属性
- 1,name:String
- 2,age:int
- *对应页面JSF HTML组件的方法
- 1,对应于上述属性的读写方法
- *对应页面JSF HTML组件的属性
- UserBean
- 数据控制器
- UserBean
- 页面控制器
- 第三层面:模型
- “用户”对象模型
- UserBean
- “用户”对象模型
- 第四层面:配置
- 无新内容
- 功能总结
- 同时使用了“消息”组件 h:message 和 h:messages
- + -第一层面:视图
- + -第五步:详解新技术(消息标签)
- 第一层面:视图
- 视图文件
- index.xhtml
- 1,一个“输出样式表”
- *标签:h:outputStylesheet
- *值绑定:在目录resource下
- 子目录
- css
- 由页面设计者命名
- 用于存放css文件
- css
- css文件
- styles.css
- 子目录
- *使用
- (1)用来指定该页面中使用的css文件
- (2)利用特性library来指定css文件在目录resource下的子目录,作为css文件库
- 例如:library="css"
- (3)利用特性name来指定css文件的名称
- 例如:name="styles.css"
- 2,一个“多条消息”组件
- *标签:h:messages
- *多条消息如何布局:layout="table"
- 默认:layout="list"
- *消息显示样式:errorClass="errors"
- *作用
- 显示错误消息
- 显示其父组件(这里是:h:form)内部所有组件产生的错误消息
- 3,一个“输入文本框”
- *标签:h:inputText
- *如果有多个相同类型组件,指定是哪个:id="name"
- *值绑定:value="#{user.name}"
- *要求必须输入值吗:required="true"
- 4,一个“输入文本框”
- *标签:h:inputText
- *指定是哪个输入文本框:id="age"
- *值绑定:value="#{user.age}"
- *要求必须输入值吗:required="true"
- *要求输入字符个数不大于3个:size="3"
- 5,一个“消息组件”
- *标签:h:message
- *指定显示哪个组件上的错误消息:for="name"
- *设置消息显示的css类:errorClass="errors"
- 6,一个“消息组件”
- *标签:h:message
- *指定显示哪个组件上的错误消息:for="age"
- *设置消息显示的css类:errorClass="errors"
- 7,一个“单选按钮”
- 略
- 1,一个“输出样式表”
- index.xhtml
- 视图资源
- JSF2.0资源规定目录:resource
- 存放资源文件的子目录:css
- 级联样式表
- styles.css
- 视图文件
- 第二层面:控制
- 页面控制器
- UserBean
- 数据控制器
- UserBean
- 页面控制器
- 第三层面:模型
- 用户对象模型
- UserBean
- 用户对象模型
- 第四层面:配置
- 因为,本章重点学JSF标签,所以,该内容暂时略过
- 第五层面:国际化
- 英文消息文件
- com.corejsf.messages.properties
- 注意:这里不讨论太多国际化问题,它超出了该案例的主要问题
- 英文消息文件
- 第一层面:视图
- + -附:谈谈本案例中的Java代码实现
- 注意:页面中输入和显示的文本内容,其数据类型都是字符串String
- + -一,“用户的名称”从输入到显示的过程
- + -1,输入用户名称的组件
- (1)组件在哪个文件中?
- (2)组件的名称是什么?
- + -2,保存用户名称的有关知识点
- (1)什么时候保存该组件中输入的内容?
- (2)输入的内容保存到哪里了?
- (3)依靠哪个功能保存输入的内容呢?
- (4)保存的内容数据类型是什么?
- (5)如果没有输入内容会出现什么情况呢?
- + -3,显示用户名称的组件
- (1)组件在哪个文件中?
- (2)组件的名称是什么?
- + -4,获取用户名称的有关知识点
- (1)什么时候显示用户名称?
- (2)从哪里获取用户名称?
- (3)依靠哪个功能获取用户名称的呢?
- (4)读取的用户名称数据类型是什么?
- (5)返回的用户名称数据类型是什么?
- + -1,输入用户名称的组件
- + -二,“用户的年龄”从输入到显示的过程
- + -1,输入用户年龄的组件
- (1)组件在哪个文件中?
- (2)组件的名称是什么?
- + -2,保存用户年龄的有关知识点
- (1)什么时候保存该组件中输入的内容?
- (2)输入的内容保存到哪里了?
- (3)依靠哪个功能保存输入的内容呢?
- (4)保存的内容数据类型是什么?
- (5)如果没有输入内容会出现什么情况呢?
- (6)如果输入的字符个数小于3、等于3或者大于3时,会出现什么情况呢?
- + -3,显示用户年龄的组件
- (1)组件在哪个文件中?
- (2)组件的名称是什么?
- + -4,获取用户年龄的有关知识点
- (1)什么时候显示用户年龄?
- (2)从哪里获取用户年龄?
- (3)依靠哪个功能获取用户年龄的呢?
- (4)读取的用户年龄数据类型是什么?
- (5)返回的用户年龄数据类型是什么?
- + -1,输入用户年龄的组件