Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 如何配置faces-config.xml_Jsf_Jsf 2_Faces Config - Fatal编程技术网

Jsf 如何配置faces-config.xml

Jsf 如何配置faces-config.xml,jsf,jsf-2,faces-config,Jsf,Jsf 2,Faces Config,我是第一次学习JSF。我创建了一个包含4个文件的小登录项目: 1.User.java 2.Login.jsp 3.Loginfailed.jsp 4.faces-config.xml 5.suces.jsp 如果用户名和密码匹配,我想导航到“Success.jsp”页面;如果用户名和密码不匹配,我想导航到“Loginfailed.jsp”。但我不知道如何放置该检查、将其放置在何处以及如何在“faces config.xml”中设置导航器 这是我的代码: User.java: package te

我是第一次学习JSF。我创建了一个包含4个文件的小登录项目: 1.User.java 2.Login.jsp 3.Loginfailed.jsp 4.faces-config.xml 5.suces.jsp

如果用户名和密码匹配,我想导航到“Success.jsp”页面;如果用户名和密码不匹配,我想导航到“Loginfailed.jsp”。但我不知道如何放置该检查、将其放置在何处以及如何在“faces config.xml”中设置导航器

这是我的代码: User.java:

package test;

    public class User {
      private String name;
      private String password;

      public String getName() {
        return name;
      }
      public void setName(String name) {
        this.name = name;
      }
      public String getPassword() {
        return password;
      }
      public void setPassword(String password) {
        this.password = password;
      }

      public String login(){
        // Image here a database access to validate the users
        if (name.equalsIgnoreCase("tester") && password.equalsIgnoreCase("tester")){
          return "success";
        } else {
          return "failed";
        }

      }

    }
Login.jsp:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Login</title>
</head>
<body>
<f:view>
  <f:loadBundle basename="messages.messages" var="msg" />
  <h:form>
    <h:panelGrid columns="2">
      <h:outputLabel value="#{msg.user}"></h:outputLabel>
      <h:inputText value="#{user.name}">      
      </h:inputText>
      <h:outputLabel value="#{msg.password}"></h:outputLabel>
      <h:inputSecret value="#{user.password}">
      </h:inputSecret>
    </h:panelGrid>
    <h:commandButton action="#{user.login}" value="#{msg.login}"></h:commandButton>    
  </h:form>
</f:view>
</body>
</html>

登录
faces-config.xml:

<faces-config>
    <managed-bean>
        <managed-bean-name>user</managed-bean-name>
        <managed-bean-class>test.User</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>
</faces-config>

用户
测试用户
要求

通过faces-config.xml的导航规则很奇怪,我建议不要在jsf 2.x中使用xml导航规则

action方法返回的字符串指定将被重定向的页面

public String myAction()
{
    return "navigatedPage";
}
如果你想重定向一个准确的URL,你可以使用下面的代码

ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
ec.redirect("URL");

很抱歉打扰了所有的读者,但我找到了答案。万一其他人遇到同样的情况,这就是解决问题的方法:

<navigation-rule>
   <from-view-id>/pages/LoginView.jsp</from-view-id>
    <navigation-case>
     <from-outcome>success</from-outcome>
     <to-view-id>/pages/Trainer.jsp</to-view-id>
   </navigation-case>
  </navigation-rule>
<navigation-rule>
   <from-view-id>/pages/LoginView.jsp</from-view-id>
    <navigation-case>
     <from-outcome>failed</from-outcome>
     <to-view-id>/pages/FailedLogin.jsp</to-view-id>
   </navigation-case>
  </navigation-rule>

/pages/LoginView.jsp
成功
/页面/Trainer.jsp
/pages/LoginView.jsp
失败
/pages/FailedLogin.jsp

faces-config.xml中的这一点起到了作用

因此,如果我返回一个URL,它将被重定向到哪里?向上投票。不,您不能返回URL,只返回没有扩展名的页面名称。请查看我的URL重定向编辑。那么控件是否将直接从此处转到新页面?标记为答案的。谢谢。你真的在学习JSF2吗?JSP自JSF2以来就被弃用,Facelets(XHTML)继承了JSP。如果您不是偶然学习JSF1,我建议您查看学习资源。