- 浏览: 135598 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
tangzlboy:
非常详细,简单易懂!
Struts2入门 -
yeafee:
这里应该是原创了。从他处找来....
用Spring快速开发jms应用(JBOSS服务器) -
effort_fan:
借鉴了。谢谢。
jar命令的使用 -
yhanliang:
简直 就 是从 "李刚" 的 <&l ...
Struts2文件的上传和下载 -
kesun_shy:
哈哈哈啊~
把CSDN上的博客文章在这做了个导入
版权声明:本文可以自由转载,转载时请务必标明作者信息及本声明
作者:++yong
作者:++yong
作者的Blog:http://blog.csdn.net/qjyong
问题描述:实现一个带自选语言栏的用户登录验证示例的国际化。对于这个实例分两部分来实现:先实现用户登录验证的国际化,再加上自选语言栏。
第一部分:实现用户登录验证
创建一个名为I18N_demo的JSF Web项目。
1. 创建后台Bean
在项目中创建一个后台Bean:RegistrationBean.java
package org.qiujy.web.controller;
import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;
public class RegistrationBean {
private String userName;
private String password;
//以下是属性的getter和setter方法
......
public String validate() {
boolean flag = true;
if (!"test".equals(userName)) {
FacesMessage msg = MessageFactory.getMessage(FacesContext
.getCurrentInstance(), "field_ISERROR",
new Object[] { "userName" });
FacesContext.getCurrentInstance().addMessage(null, msg);
flag = false;
}
if (!"123456".equals(password)) {
FacesMessage msg = MessageFactory.getMessage(FacesContext
.getCurrentInstance(), "field_ISERROR",
new Object[] { "password" });
FacesContext.getCurrentInstance().addMessage(null, msg);
flag = false;
}
if (flag) {
return "success";
} else {
return "failure";
}
}
}
这个Bean中提供跟页面绑定的属性,以及跟动作按钮绑定的动作处理方法validate(),在这个方法中需要注意的是,对用户名、密码都进行了相应的判断,如果是test、123456,就是合法用户,返回结果字符串“success”,否则是非法用户,通过JSF提供的MessageFactory来获取并创建好一则本地化错误消息(消息“键”是“field_ISERROR”),添加到FacesContext中,然后返回结果字符串“failure”。这样到了失败页面就可以取出相应的经过本地化的错误消息。
2. 配置托管Bean和资源文件绑定
在faces-config.xml文件中把RegistrationBean配置成托管Bean。同时为了支持国际化,指定了错误消息文件和资源文件,它们是同一个文件,就是存放在应用的org/qiujy/web/resources目录下的ApplicationMessages.properties文件,稍后再来看这个文件的内容:
<faces-config>
<application>
<message-bundle>
org.qiujy.web.resources.ApplicationMessages
</message-bundle>
<locale-config>
<default-locale>zh_CN</default-locale>
<supported-locale>en</supported-locale>
<supported-locale>zh_TW</supported-locale>
</locale-config>
<resource-bundle>
<base-name>
org.qiujy.web.resources.ApplicationMessages
</base-name>
<var>bundle</var>
</resource-bundle>
</application>
<managed-bean>
<managed-bean-name>registrationBean</managed-bean-name>
<managed-bean-class>
org.qiujy.web.controller.RegistrationBean
</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
......
</faces-config>
3. 创建页面和本地化资源文件
用户登录页面:userlogin.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<f:view>
<html>
<head>
<title><h:outputText value="#{bundle.title_login}" /></title>
</head>
<body>
<h:form id="loginForm">
<h:panelGrid columns="2">
<h:graphicImage url="#{bundle.login_logo}"
width="220" height="160"/>
<h:panelGrid columns="3">
<f:facet name="caption">
<h:outputText value="#{bundle.title_login}" />
</f:facet>
<h:outputText value="#{bundle.login_userName}" />
<h:inputText id="textName"
value="#{registrationBean.userName}"
required="true">
</h:inputText>
<h:message for="textName" style="color:red" />
<h:outputText value="#{bundle.login_password}" />
<h:inputSecret id="textPwd"
value="#{registrationBean.password}"
required="true">
<f:validateLength minimum="6" maximum="20"/>
</h:inputSecret>
<h:message for="textPwd" style="color:red" />
<f:facet name="footer">
<h:panelGroup>
<h:commandButton value="#{bundle.button_submit}"
action="#{registrationBean.validate}" />
<h:outputText value=" "></h:outputText>
<h:commandButton value="#{bundle.button_reset}"
type="reset" />
</h:panelGroup>
</f:facet>
</h:panelGrid>
</h:panelGrid>
</h:form>
</body>
</html>
</f:view>
在这个页面中,所有静态文本,错误消息都通过值表达式用资源文件的别名“bundle”来获取的。所有的资源消息“键”在本地化资源文件中都配置了相应的“值”,如下:
代码片段7.15 缺省的资源文件ApplicationMessages.properties
button_submit=Submit
button_reset=Reset
button_back=Back
title_login=User Login Page
login_userName=UserName:
login_password=Password:
login_logo=/images/jsf_i18n_en.gif
success_welcome=Welcome:
failure_error=Failure!
field_ISERROR= {0} is error.
英文的资源文件ApplicationMessages_en.properties的内容跟这个相同。下面再来看简体中文的资源文件:
简体中文的资源文件ApplicationMessages_zh_CN.properties
button_submit=提交
button_reset=重置
button_back=后退
title_login=用户登录页面
login_userName=用户名:
login_password=密码::
login_logo=/images/jsf_i18n_zh_CN.gif
success_welcome=欢迎:
failure_error=失败!
field_ISERROR= {0} 不正确
需要注意是,使用是别忘了进行Uncodei编码转换。至于繁体中文的资源文件也跟这个文件差不多,在此不再赘述。
另外要对标准的错误消息进行国际化,可以把SUN的RI实现中的错误消息全部复制到本地化资源文件中,对简体中文的资源进行汉化,由于内容较多,在这就不帖出代码了,具体可能看本例的源代码。
接下来看登录成功后的页面的代码:success.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<f:view>
<html>
<head>
<title><h:outputText value="#{bundle.success_welcome}"/></title>
</head>
<body>
<h2>
<h:outputText value="#{bundle.success_welcome}" />
<h:outputText value="#{registrationBean.userName}" />
</h2>
<jsp:useBean id="currentDate" class="java.util.Date" scope="request"/>
<h:outputText value="#{currentDate}">
<f:convertDateTime type="both"/>
</h:outputText>
</body>
</html>
</f:view>
在这个页面中,为了演示日期时间的国际化,先创建了一个日期对象,然后用Output组件标签输出,并给这个标签注册了DateTimeConverter,这样就能实现日期时间的国际化了。
最后再来看登录失败页面的代码:failure.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<f:view>
<html>
<head>
<title><h:outputText value="#{bundle.failure_error}"/></title>
</head>
<body>
<h2><h:outputText value="#{bundle.failure_error}"/></h2>
<h:messages style="color:red"/><br/>
评论
1 楼
ranyut
2009-01-02
<application>
<message-bundle>
org.qiujy.web.resources.ApplicationMessages
</message-bundle>
<locale-config>
<default-locale>zh_CN</default-locale>
<supported-locale>en</supported-locale>
<supported-locale>zh_TW</supported-locale>
</locale-config>
<resource-bundle>
<base-name>
org.qiujy.web.resources.ApplicationMessages
</base-name>
<var>bundle</var>
</resource-bundle>
</application>
有错啊
<application>里没有 <resource-bundle> 标签 ?????
<message-bundle>
org.qiujy.web.resources.ApplicationMessages
</message-bundle>
<locale-config>
<default-locale>zh_CN</default-locale>
<supported-locale>en</supported-locale>
<supported-locale>zh_TW</supported-locale>
</locale-config>
<resource-bundle>
<base-name>
org.qiujy.web.resources.ApplicationMessages
</base-name>
<var>bundle</var>
</resource-bundle>
</application>
有错啊
<application>里没有 <resource-bundle> 标签 ?????
发表评论
-
JSF简介
2007-10-19 20:36 1215JSF简介 一、 什么是 JSF ... -
JSF和MVC
2007-10-19 20:43 978JSF和MVC 1. JSF 和 MVC JSF 是几年 ... -
JSF表达式语言
2007-10-19 20:47 2770JSF表达式语言 JSF的表达式语言(EL)的形式跟jSP的表 ... -
JSF验证器和转换器
2007-10-19 20:48 3245JSF验证器和转换器 ... -
jsf学习系列文章的地址列表
2007-10-19 20:59 999本系列文章内容为jsf的入门级学习文章,若有不正确之处,还请多 ... -
jsh实现的petstore的用例图和类图
2008-01-05 16:17 1708JSH实现的petstore项目的架构图: 以下这些图是的分 ... -
JSF+EJB3的项目架构图(最新修改)
2008-02-23 15:45 2255我画的一个JSF+EJB3的项目架构初稿图,总感觉有不妥之处, ... -
我做的JSF1.2的PPT
2008-02-25 23:55 1908封面: 目录页: 内容第一页: 其它的以后统一做成PD ...
相关推荐
**JSF(JavaServer Faces)** 是一个Java平台上的用户界面框架,用于构建Web应用程序。它为开发人员提供了一种模型-视图-控制器(MVC)架构,简化了前端和后端之间的交互。JSF提供了组件库,使得创建动态、交互式的...
JSF的核心理念是将用户界面组件与后端业务逻辑分离开来,提供了一个模型-视图-控制器(MVC)架构。 **1. JSF组件库** JSF提供了丰富的组件库,包括按钮、表单、输入字段、表格、菜单等。这些组件可以通过XML声明在...
4. **EL(Expression Language)**:EL是JSF中的一个表达式语言,用于从后台bean中获取和设置值,以及调用方法。例如,`#{bean.property}`表示访问名为`bean`的bean的`property`属性。 5. ** Managed Beans**:在...
jsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSFjsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSF
JavaScriptServerFaces(JSF)是JavaEE平台中的一个用于构建用户界面的组件框架,它提供了一种声明式的方式来创建Web应用程序。在这个实例中,我们关注的是用户登录和信息查询的功能,这两个是任何Web应用中最基本且...
本实例将通过Eclipse集成开发环境(IDE)来创建一个JSF登录系统,并在Tomcat服务器上进行部署和运行。 首先,我们需要在Eclipse中创建一个新的JSF项目。选择"File" -> "New" -> "Dynamic Web Project",然后为项目...
在这个"JSF实现的一个小的实例"中,我们可以看到一个基本的JSF应用是如何通过集成开发环境(IDE)如myEclipse与Web服务器如Tomcat来搭建和运行的。以下将详细解析这个实例所涉及的关键知识点: 1. **JSF框架**:JSF...
**JSF(JavaServer Faces)** 是一个Java平台上的企业级Web应用程序开发框架,由Sun Microsystems(现已被Oracle收购)开发。它为构建用户界面提供了一种组件化、事件驱动的方法,极大地简化了Web应用的开发流程。...
在JavaScript Server Faces (JSF) 中,实现多语言国际化是一项重要的功能,它允许应用程序为不同地区的用户提供本地化的体验。JSF 提供了内置的支持来处理国际化,使得开发者能够轻松地根据用户的选择或浏览器设置来...
下面将详细讲解如何在JSF中创建一个用户登录界面。 1. **JSF架构简述** JSF是一种组件化的MVC(Model-View-Controller)框架,它提供了丰富的UI组件库和事件处理机制。开发者可以通过声明式的方式定义界面,与后端...
在本实例中,你可能会找到一个或多个Managed Beans类,它们包含了"HelloWorld"逻辑的具体实现。 4. JSF页面(View): 页面通常使用Facelets作为视图表示语言,它允许开发者创建XML或XHTML格式的页面,其中嵌入了...
5. **控制器(Controller)**:JSF的控制器主要由Managed Beans实现,它们处理用户的请求,更新模型,并决定如何响应。 **DataGrid的使用** DataGrid是JSF中一种展示数据的组件,类似于HTML的表格。它用于将数据...
**JSF(JavaServer Faces)** 是一个Java平台上的Web应用程序框架,用于构建用户界面。它简化了开发人员创建交互式、数据驱动的Web应用程序的过程。JSF提供了一种组件模型,允许开发者通过声明性方式来构建用户界面...
**JSF(JavaServer Faces)** 是一个Java平台上的用户界面框架,用于构建Web应用程序。JSF的核心概念是组件模型,它允许开发者通过拖放组件的方式构建用户界面,然后通过后端Java代码处理用户交互。在本实例中,JSF...
这个“JSF例子,jsf开始实例”是一个教程或项目,旨在帮助开发者理解并开始使用JSF进行实际开发。在这个压缩包文件中,包含了一个名为"jsf_test1"的子文件,这可能是一个示例工程或者是一系列相关的代码文件。 JSF...
JSF是Java平台上的一个标准MVC(Model-View-Controller)框架,主要用于构建用户界面。它提供了丰富的组件库和事件处理机制,简化了前端开发。在本实例中,JSF将作为用户交互的桥梁,处理用户的请求,更新模型,并...
Java Server Faces (JSF) 是一个用于构建用户界面的Java EE框架,主要用于开发Web应用程序。在JSF中,动态创建表单控件是一项强大的功能,它允许开发者在运行时根据需求生成不同的用户输入元素,提高了代码的灵活性...
在JavaServer Faces (JSF)框架中,PrimeFaces是一个非常流行的UI组件库,它提供了许多增强用户界面的功能。其中,`<p:fileUpload>`组件是用于实现文件上传功能的一个重要元素。本篇文章将深入探讨如何使用PrimeFaces...
在这个实例中,开发者将学习如何配置和整合这些框架,创建一个完整的用户管理系统,包括登录、权限控制和动态菜单展示。这不仅涵盖了技术实现,也涉及到了实际项目开发中的最佳实践,对于提升Java Web开发技能...