首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

JSF 里的action经验

2012-11-07 
JSF 里的action心得最近一直都在研究jsf 以前一直对ajax anction actionListener 里的东西不是很清楚 对js

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

热点排行