- 浏览: 701411 次
- 性别:
- 来自: 北京
博客专栏
-
读金庸故事,品程序人生
浏览量:47681
文章分类
最新评论
-
hty881008:
LZ,你的json返回是怎么出来的,我的怎么是No messa ...
使用CXF暴露您的REST服务 -
jxFY:
赞
Apache的对象池化工具commons-pool -
wangyudong:
新版本的Wisdom RESTClient地址https:// ...
使用CXF暴露您的REST服务 -
wangyudong:
由CXF实现的微服务需要有比较好的工具去测试RESTful A ...
使用CXF暴露您的REST服务 -
spring_springdata:
可以参考最新的文档:如何在eclipse jee中检出项目并转 ...
Maven3实战笔记01环境配置与使用入门
1. 前言
这个是对于以前JSF学习的一点点补充,因为笔者前些日子使用Struts2使用的太多了。后来发现JSF生疏很多了,那么写一下这次关于JSF的使用补充的笔记,留给自己以后使用的时候参考用。
2. 流程转向
如果配置了以下流程
翻译过来就是所有以addUser.xhtml为入口的页面的动作,经过托管Bean的处理后会有4种可能的出口,分别是:addUserSuccess、addUserError、serchUserMoneySuccess、serchUserInfoSuccess。 那么像以下这种配置
则翻译过来就是流程仅仅关注托管Bean的动作,触发了托管Bean的相关方法的时候,对方法做一个结果字符串的转向。如果发现在托管Bean中发生了错误,要么是直接在页面上报出Exception,要么就是捕获异常后提示错误信息给输入视图。其中adminAction是有效的托管Bean。Logout和listException是托管Bean的方法。2种配置都是对流程的一种描述,前者更偏向于表单提交、后者更偏向于组件动作相应。 4. 界面参数传递 在Struts2中将页面的参数传递到Action中是一件十分简单的事情。而JSF就得在托管Bean的配置文件配置一下。比如现在需要界面传递一个userId甚至是adminDTO给托管Bean——adminAction,就得如下配置
4. 使用资源文件国际化 国际化这次分为2个部分 1):JSF自身消息的国际化 因为JSF自身的消息提示默认是英文的,所以需要自己建立一个消息提示的资源文件,messages_zh_CN.properties文件如下
之后在JSF的配置文件中配置如下
2:)其他信息输出的国际化文件 首先建立一个国际化文件message.properties,内容如下
在页面加载的时候可以如下
代表加载资源文件,之后使用msg就可以使用资源文件中的信息了。代码如下
5. h:commandLink与h:outputLink的区别 h:commandLink一般是触发托管Bean的某些方法的时候用到的。
而h:outputLink仅仅是连接到某一个JSP或者XHTML页面的。
需要说明的是h:commandLink中的action中的表达式只能是针对于一个托管Bean的合法方法。不能是一个变量值或者是一个像h:outputLink中的URL连接。 6. 获取JSF项目名称 通过如下方式可获取项目名称
7. 视图下有特殊类型变量 比如一个页面的表单有个Double类型的变量需要转型,那么应该如此 1:先通过一个托管Bean的方法转向某个含有需要变量转型的页面。
在流程配置文件配置流程如下
在preTransferMoney.xhtml中的表单需要转型配置如下
这样提交后就没转型错误的问题了~ 8. 逻辑表达式 在JSF的页面中遍历实体、逻辑判断这些操作都需要借助于JSTL和EL表达式,因为JSF1.2标准自身并没有提供这种逻辑标签。不像Struts2,<s:if>可以做逻辑判断。所以它必须借助EL表达式和JSTL做逻辑处理。 <navigation-rule>
<from-view-id>addUser.xhtml</from-view-id>
<navigation-case>
<from-outcome>addUserSuccess</from-outcome>
<to-view-id>login.xhtml</to-view-id>
<redirect />
</navigation-case>
<navigation-case>
<from-outcome>addUserError</from-outcome>
<to-view-id>addUser.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>serchUserMoneySuccess</from-outcome>
<to-view-id>userMoney.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>serchUserInfoSuccess</from-outcome>
<to-view-id>userMoney.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<navigation-case>
<from-action>#{adminAction.logout}</from-action>
<from-outcome>logout</from-outcome>
<to-view-id>login.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-action>#{adminAction.listException}</from-action>
<from-outcome>listExceptionSuccess</from-outcome>
<to-view-id>listExceptionSuccess.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<managed-bean>
<managed-bean-name>adminAction</managed-bean-name>
<managed-bean-class>web.action.AdminAction</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<!--从页面上传过来的参数-->
<managed-property>
<property-name>adminDTO</property-name>
<value>#{adminDTO}</value>
</managed-property>
<managed-property>
<property-name>userId</property-name>
<value>#{param.userId}</value>
</managed-property>
<managed-property>
<property-name>dealInfoId</property-name>
<value>#{param.dealInfoId}</value>
</managed-property>
<managed-property>
<property-name>exceptionId</property-name>
<value>#{param.exceptionId}</value>
</managed-property>
<managed-property>
<property-name>page</property-name>
<value>#{param.page}</value>
</managed-property>
</managed-bean>
javax.faces.validator.NOT_IN_RANGE={2}\u6307\u5B9A\u5C5E\u6027\u503C\u4E0D\u5728[0}\uFF0C{1}]\u8303\u56F4\u5185
javax.faces.validator.NOT_IN_RANGE_detail={2}\u503C\u5FC5\u987B\u4ECB\u4E8E[{0}\uFF0C{1}]\u4E4B\u95F4
javax.faces.validator.DoubleRangeValidator.LIMIT={0}\u8D85\u8FC7\u4E86double\u7C7B\u578B\u7684\u6781\u9650
javax.faces.validator.DoubleRangeValidator.MAXIMUM={1}\u5927\u4E8E\u4E86\u5141\u8BB8\u7684\u6700\u5927\u503C\u201C{0}\u201D
javax.faces.validator.DoubleRangeValidator.MINIMUM={1}\u5C0F\u4E8E\u4E86\u5141\u8BB8\u7684\u6700\u5C0F\u503C\u201C{0}\u201D
javax.faces.validator.DoubleRangeValidator.TYPE={0}\u4E0D\u662F\u6709\u6548\u7684double\u7C7B\u578B
javax.faces.validator.LengthValidator.LIMIT={0}\u8D85\u8FC7\u4E86\u5B57\u7B26\u6781\u9650
javax.faces.validator.LengthValidator.MAXIMUM={1}\u957F\u5EA6\u5927\u4E8E\u4E86\u5141\u8BB8\u7684\u6700\u5927\u503C\u201C{0}\u201D
javax.faces.validator.LengthValidator.MINIMUM={1}\u957F\u5EA6\u5C0F\u4E8E\u4E86\u5141\u8BB8\u7684\u6700\u5C0F\u503C\u201C{0}\u201D
javax.faces.component.UIInput.CONVERSION=\u6570\u636E\u8F6C\u6362\u9519\u8BEF
javax.faces.component.UIInput.REQUIRED={0}\u662F\u5FC5\u586B\u9879
javax.faces.component.UISelectOne.INVALID={0}\u9009\u62E9\u5185\u5BB9\u65E0\u6548
javax.faces.component.UISelectMany.INVALID={0}\u9009\u62E9\u5185\u5BB9\u65E0\u6548
javax.faces.validator.RequiredValidator.FAILED={0}\u662F\u5FC5\u586B\u9879.
javax.faces.validator.LongRangeValidator.LIMIT={0}\u8D85\u8FC7\u4E86long\u7C7B\u578B\u7684\u6781\u9650
javax.faces.validator.LongRangeValidator.MAXIMUM={1}\u5927\u4E8E\u4E86\u5141\u8BB8\u7684\u6700\u5927\u503C\u201C{0}\u201D
javax.faces.validator.LongRangeValidator.MINIMUM={1}\u5C0F\u4E8E\u4E86\u5141\u8BB8\u7684\u6700\u5C0F\u503C\u201C{0}\u201D
javax.faces.validator.LongRangeValidator.TYPE={0}\u4E0D\u662F\u6709\u6548\u7684long\u7C7B\u578B
<application>
<message-bundle>messages</message-bundle>
<locale-config>
<default-locale>zh_CN</default-locale> <!--默认资源文件-->
<supported-locale>en</supported-locale> <!--支持的资源文件-->
<supported-locale>en_IE</supported-locale> <!--支持的资源文件-->
</locale-config>
</application>
<application>
<locale-config>
<default-locale>zh_CN</default-locale>
</locale-config>
<!-- 配置Facelets的支持 -->
<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
</application>
loginButton=\u767B\u5F55
addUser=\u6DFB\u52A0\u7528\u6237
updateUserMoney=\u5145\u503C
transferMoney=\u8F6C\u8D26
<f:loadBundle basename="message" var="msg" />
<h:commandButton action="#{userAction.addUser}" styleClass="btn-submit" value="#{msg.addUser}" />
<h:commandLink action="#{adminAction.deleteDeal}" value="【刪除】">
<f:param name="dealInfoId" value="#{dealInfoDTOListVar.id}" />
</h:commandLink>
<h:outputLink value="#{ctxPath}/mangerTeam/addTeam.faces">
<h:outputText value="【添加俱乐部】" />
</h:outputLink>
<c:set var="ctxPath" value="#{facesContext.externalContext.requestContextPath}" />
/**
* 准备转账
*
* @return
*/
public String preTransferMoney() {
return "preTransferMoney";
}
<navigation-rule>
<navigation-case> <from-action>#{userAction.preTransferMoney}</from-action>
<from-outcome>preTransferMoney</from-outcome>
<to-view-id>preTransferMoney.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-action>#{userAction.transferMoney}</from-action>
<from-outcome>serchUserMoneySuccess</from-outcome>
<to-view-id>userMoney.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<tr>
<td>转账金額: </td>
<td><h:inputText id="money" value="#{userAction.money}"
required="true">
<f:converter converterId="javax.faces.Double" />
</h:inputText>元
</td>
</tr>
发表评论
-
Web前端优化
2014-04-08 09:35 3651Web前端优化总结 刘岩 suhua ... -
使用CXF暴露您的REST服务
2011-06-15 14:32 181221. 前言 现在互联网Open API流行,将您的Web应 ... -
Maven3实战笔记12Maven构建Web应用
2011-06-14 09:20 32551. 构建Web应用介绍 Jav ... -
JSF与Struts2的瑜亮之争
2011-05-12 15:36 9790刘岩 Email:suhuanzheng778487 ... -
JavaEE5学习笔记14-JSF集成Facelets使用经验总结
2011-03-24 12:06 31401. Facelets就像tiles、siteme ... -
JavaEE5学习笔记13-JSF集成AJAX使用经验总结
2011-03-24 11:36 5367JSF也支持AJAX,ajax4jsf是专门为JSF提供的AJ ... -
JavaEE5学习笔记07-Web层与EJB集成总结(5):异常问题以及解决
2011-02-23 17:00 3490在Web系统和EJB整合的过程中,比较麻烦的经历就是打包、部署 ... -
JavaEE5学习笔记07-Web层与EJB集成总结(4):Struts2与EJB集成
2011-02-23 16:56 1470Struts2+EJB+JBoss的集成Demo 因为St ... -
JavaEE5学习笔记07-Web层与EJB集成总结(3):JSF与EJB集成
2011-02-23 16:55 1428JSF+EJB+JBoss集成Demo 上面提到过JSF也 ... -
JavaEE5学习笔记07-Web层与EJB集成总结(2):servlet与EJB集成结果展示
2011-02-23 16:51 1258之后在写2个jsp页面 insertUserFormServ ... -
JavaEE5学习笔记07-Web层与EJB集成总结(1):servlet与EJB集成
2011-02-23 16:48 17681. 集成时的感受 单丝不成线,孤木不成林。尽管 ... -
Struts2+Web常使用的功能经验笔记第1季--4
2011-01-21 10:15 12721. <meta http-equiv ... -
Struts2+Web常使用的功能经验笔记第1季--3
2011-01-21 10:14 14231. Struts2的拦截器 它一般作为S ... -
Struts2+Web常使用的功能经验笔记第1季--2
2011-01-21 10:13 14121. Struts2的JSON插件,让Str ... -
Struts2+Web常使用的功能经验笔记第1季--1
2011-01-21 10:11 23511. 前言 Apache的Struts2已经 ... -
JSF+Spring+JPA(Hibernate实现)的环境搭建(4)
2010-12-30 15:13 2072配置Spring文件applicationContext.xm ... -
修改fck源代码(2)
2010-12-30 14:35 1160showImage.jsp代码如下: <% ... -
修改fck源代码(1)
2010-12-30 14:33 1556OK,到此为止,FCK基本集成到您的web系统当中。但是目前出 ... -
FCKEditor使用、修改源代码经验总结
2010-12-30 14:23 3665FCKEditor使用、修改源代码经验总结 作者:刘岩 E ...
相关推荐
JAVAEE系列笔记2JAVAEE系列笔记2JAVAEE系列笔记2JAVAEE系列笔记2JAVAEE系列笔记2JAVAEE系列笔记2JAVAEE系列笔记2
这篇学习笔记主要聚焦于JavaMail在JavaEE5中的使用,通过深入理解其核心概念和实践操作,我们可以更好地在实际项目中应用这一工具。 JavaMail API提供了一套标准的接口,允许Java应用程序发送和接收电子邮件。它...
这四个JAR文件组合在一起,通常用于构建一个基于Java EE的Web应用程序,其中JSF负责用户界面的展示和交互,JSTL提供方便的页面逻辑处理,而javaee.jar提供了整个Java EE平台的基础服务。开发者在使用这些库时,需要...
### JavaEE核心概念详解 #### 模型-视图-控制器 (MVC) 架构模式 MVC架构模式是JavaEE中非常重要的一个概念,主要用于构建清晰且可维护的应用程序。 - **Model(模型)**:是应用程序的核心组件,负责处理应用程序...
JAVAEE课堂笔记
JavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-...
轻量级JavaEE企业实战第3版
JSF(JavaServer Faces)是JavaEE中的一个用户界面组件模型,用于创建动态、交互式的Web应用。它提供了一种声明式的方式来构建用户界面,并且与EJB、JPA等其他JavaEE组件无缝集成。JSF组件可以被声明在XHTML页面中,...
### JavaEE5学习笔记01-JTA和数据库事务:深入解析与应用 #### 一、JavaEE5概览与核心组件 JavaEE5是Java Enterprise Edition的第五个版本,标志着企业级Java应用的一个重要里程碑。它引入了一系列重要的新特性,...
JavaEE 5是Java平台企业版的一个版本,它为开发分布式、基于Web的企业应用程序提供了全面的框架。这个压缩包包含了四个关键的jar包,它们在JavaEE 5的环境中起着至关重要的作用。 1. **javaee.jar**:这是JavaEE 5...
本学习笔记涵盖了JavaEE的核心技术,帮助学习者深入理解和掌握javaweb的各项技能。 1. **Servlet与JSP** - **Servlet**:Servlet是Java编写的服务器端程序,主要用于扩展服务器的功能。在JavaEE中,Servlet处理...
飞达商贸有限公司POS系统 东城大学在线答疑系统 A10酒店预订管理系统 远洋网络购物广场商务系统 时讯科技人事管理系统 骄阳网上票务查询系统 慕仁大学图书馆管理系统 华北城市大学学生管理系统 迅捷中介二手房交易...
JAVAEE系列笔记1.pdfJAVAEE系列笔记1.pdfJAVAEE系列笔记1.pdfJAVAEE系列笔记1.pdf
在JavaEE中,JSF(JavaServer Faces)是一个用于构建用户界面的组件模型,它简化了开发人员创建用户交互界面的过程。JSF API和JSF实现是JSF的核心组成部分。 **JSF API** JSF API提供了用于创建、管理和处理用户...