假设1:在主页登陆后要返回主页并在原来是登录框的地方显示  某某您好,欢迎您登录 日期
     这个怎么做?
假设2:用户登录后把一些相关信息放在session中,在另一个页面判断用户未登陆时是用session中的userName再到数据库中搜索一次来判断到底登录没 还是 在用户登录后在user表中设置一个用户权限,如果为某个字符则表示已经登录了。
     那么,用那种方法更科学,更好?或者说有更好的方法?
假设3:在访问一个页面时如果之前就已经登录了就显示 某某您好,欢迎您登录 日期。如果未登陆就显示登录框。
     这个怎么做?判断是否登陆在Bean中写方法,但是在faces-config.xml中配置导航规则时该怎么写?它们都是一个页面啊难道说写header1.jsp header2.jsp两个header,一个放登录框,一个放 某某您好,欢迎您登录 日期?或者说还是把判断放在页面里?那这个不是违背了框架式开发的原理吗,而且不好维护是吧

解决方案 »

  1.   

    没人知道?还是学JSF的人少哦.....郁闷啊.
    JSF与STRUTS差不多的,这两个都是一个人搞出来的.
    具体的不清楚说下方法总有吧?比如说在STRUTS中怎么处理这种情况呢
      

  2.   

    问题1 :主页这么写
    <%
      if(session.getAttribute("username")==null){
    %>
    请您登陆!
    <%
      }else{
    %>
    你好:<%=session.getAttribute("username")%>
    <%}%>问题2 :在另外一个页面判断session.getAttribute("username")是否为空,当然,这是在不涉及用户权限的情况下,如果用户有权限区别,那么在登录的时候把用户权限放到session中,然后取出来判断就可以!问题3 :放在页面中就可以了,因为需要进行的判断很简单,MVC中也不是说前台就不能有逻辑代码。
      

  3.   

    哦,那最开始session中的一些对象在哪定义呢?
    是在主页中定义还是在backing bean中?
    貌似在主页中定义userName为null
    <% 
      if(session.getAttribute("username")==null){ 
    %> 
    这句话好象总为true吧
      

  4.   


    在登陆成功后,用session.setAttribute("userName",userName);这样的话,只要不结束此次对话,session.getAttribute("username")都不会为空.
    其实你说的三个问题都可以用是一个问题,都可以用session对象来解决,这个是JSP的隐式对象,可以多看看它的资料
      

  5.   

    只需要一个范围为session的manager bean就可以了,既然用jsf就尽量不要去考虑<%%>这样的东西.
    在manager bean设置一个属性如boolean login=false;
    登陆成功login=true;
    在页面中根据login值来决定是登陆还是欢迎,你可以这样写
    <h:panelGrid style='display:#{UserBean.login==true?"none":""}'>
        <h:outputText value="请登陆"/> .....
    </h:panelGrid>
    <h:panelGrid style='display:#{UserBean.login==true?"":"none"}'>
        <h:outputText value="欢迎你,#{UserBean.username}"/> .....
    </h:panelGrid>