繁体   English   中英

如何根据没有 faces-config.xml 文件的操作方法返回字符串直接从 ManagedBean 调用 xhml 页面

[英]How to direct call xhml page from ManagedBean based on action method return string without faces-config.xml file

1. ManagedBean class

@Named
public class LoginBean{
    private String username;
    private String password;

    private String userType;

    // setter getter

    public String login() {

        ...
        if(isUserValidate()){
            if(userType.equals("HR"){
                return "HRHOME";
            }

            if(userType.equals("ADMIN"){
                return "ADMINHOME";
            }
            if(userType.equals("MANAGER"){
                return "MANAGERHOME";
            }


        }
        return "FAILURE";
    }
}

2.xhtml文件

WebContent\app\common\login.xhtml;
WebContent\app\common\error.xhtml;

WebContent\app\admin\adminHome.xhtml;
WebContent\app\hr\hrHome.xhtml;
....

3.faces-config.xml

<!-- Case 0  for login user  -->
<from-view-id>*</from-view-id>
<navigation-case>
    <from-outcome>LOGIN</from-outcome>
    <to-view-id>/app/common/login.xhtml</to-view-id>
</navigation-case>

<!-- Case 1 if login user is from HR -->
<from-view-id>/app/common/login.xhtml</from-view-id>
<navigation-case>
    <from-outcome>HRHOME</from-outcome>
    <to-view-id>/app/hr/hrHome.xhtml</to-view-id>
</navigation-case>
<navigation-case>
    <from-outcome>ADMINHOME</from-outcome>
    <to-view-id>/app/admin/adminHome.xhtml</to-view-id>
</navigation-case>
...
<navigation-case>
    <from-outcome>FAILURE</from-outcome>
    <to-view-id>/app/common/error.xhtml</to-view-id>
</navigation-case>

正如您在上面的快照代码中看到的那样..

login.xhtml 对所有用户都是通用的,根据登录用户验证结果页面将被决定。 如果用户属于 HR 则 app/hr/hrHome.xhtml 将被重定向 如果用户属于 Admin 然后 app/admin/adminHome.xhtml

需求:我想根据LoginBean class的action方法login()的返回字符串重定向具体结果xhtml页面,而不是使用xml配置文件faces-config.Z0F635D0E0F3874FFF8B581C132E。

如何使用 Primefaces 和 JSF 来做到这一点?

你可以做类似的事情

 if (isUserValidate()) {
         return "/WebContent\app\hr\hrHome.jsf?faces-redirect=true";
      } else  if(userType.equals("ADMIN"){ {
         return "/WebContent\app\admin\adminHome.jsf?faces-redirect=true";
     } else if(.......){
      .........
     }else{
          return "/WebContent\app\admin\error.jsf?faces-redirect=true"
     }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM