JSF 里的action心得

最近一直都在研究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 可以将后缀名去掉 我觉得这样是不是让代码变得没有层次感所以这就是我的写的风格 个人喜好 不说也罢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值