最近一直都在研究jsf 以前一直对ajax anction actionListener 里的东西不是很清楚 对jsf里的流程都不是很清楚 经过一段时间的学习 现在把自己的学习的心得写出来
首先就是
action的使用规律
我使用action一般都是用来进行页面的导航可以通过一个result进行导航 具体这个导航的我认为应该是类似于forward的工作模式 就是说request范围的参数也是可以传递的
现在就举一个例子
首先是一个login.xhtml的代码
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Login Face</title>
<script src="js/login.js" type="text/javascript"></script>
</h:head>
<h:body>
<h:form id="loginForm" onsubmit="return checkForm()">
<h:outputScript library="javax.faces" name="jsf.js" target="head"/>
<h:outputLabel value="welcom to Login our site" ></h:outputLabel>
<br/><h:outputLabel value="#{user.message}"></h:outputLabel>
<br/><h:outputLabel value="userName:"></h:outputLabel>
<h:inputText id="userName" value="#{user.userName}" ></h:inputText>
<br/><h:outputLabel value="password:" ></h:outputLabel>
<h:inputSecret id="password" value="#{user.password}"></h:inputSecret>
<br/><h:commandButton value="submit" action="#{manager.login}" />
<a href="register.jsf">register</a>
<a href="forget.jsf">forget</a>
</h:form>
</h:body>
</html>
从这个代码中可以看出的是我的业务的逻辑主要是#{manager.login} 所以我先设置的user这个managerBean 是一个request的bean 但是 manager是session的bean
我规定的是加入登录成功的话就转到successfully.jsf的页面 如果输入的用户名不存在的话就在当前页面进行显示 如果密码错误的话就显示密码错误
manager.login的代码如下
public String login(){
String result = null;
DBibatis db = new DBIbatisImpl();//这是一个数据库操作的接口
ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
//获得的是request里的数据
UserBean loginUser =(UserBean)context.getRequestMap().get("user");
//从数据库中获得这个用户名的结果
UserBean dbUser = db.queryByName(loginUser.getUserName());
if(dbUser == null){
//没有这个用户名就在request中增加message的内容
loginUser.setMessage("no this userName here!");
result = "login.jsf";//规定导航的jsf
}else {
if(dbUser.getPassword().equals(loginUser.getPassword())){
result = "successfully.jsf";//显示的是成功之后的页面
this.userName = loginUser.getUserName();//在这个sessionScope的manager 我设置了一个用户名的标识userName
}else{
//这个原理和第一个是相同的 所以说不再讲解了
loginUser.setMessage("the password is wrong!");
result = "login.jsf";
}
}
return result;//返回这个导航的结果
}
successfully.jsf中的代码是
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h:outputLabel value="Welcome you ! "></h:outputLabel>
<h:outputText value="#{manager.userName}"></h:outputText>
</h:body>
</html>
我认为有的是直接result 可以将后缀名去掉 我觉得这样是不是让代码变得没有层次感所以这就是我的写的风格 个人喜好 不说也罢
分享到:
相关推荐
《JSF in Action》
JSF in Action英文版(含源代码)
JSF in action jsf宝典 轻量级框架
2个部分,第一部分和扩展部分,希望能帮助到初学JSF的人。
JSF in Action 中文版 JSF in Action 中文版
jsf 资料 pdf 入门的源代码 JSF IN ACTION
JSF中action,actionListener,valueChangeListener的区别
jsf in action 电子书jsf in action 电子书jsf in action 电子书jsf in action 电子书
JSF IN ACTION 随书源码 part1 JSF_IN_ACTION_CODE part1
in action系列经典丛书 JSF in Action英文版 12.48M
jsf 分页 jsf 分页 jsf 分页 jsf 分页
JSF实战 JSF_In_Action_Ext.pdf 经典教材 国内首屈一指的好书
jsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSFjsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSF
jsf in Action源代码(1-6章),JSF实战源代码(1-6章),JavaServer Faces in Avtion源代码(1-6章)
JSF IN ACTION 随书源码 part2
JSF IN ACTION (源代码) 以前上传的书的源代码.......IN Action书的代码都可以在Manning 的官方网站(www.manning.com)上可以下载得到..希望大家喜欢
Manning - JavaServer Faces JSF in Action.pdf
JSF In Action English Version
JSF In Action 学习一.rar