简体   繁体   English

JSF使用AJAX揭示表单

[英]JSF reveal form with AJAX

I was wondering if this is possible. 我想知道这是否可能。 I have a login form that receives an ID and password from a user. 我有一个从用户接收ID和密码的登录表单。 If it checks out in the backend, another form is revealed. 如果在后端签出,则会显示另一种形式。 So far I am actually sending the login details to another xhtml page to be processed. 到目前为止,我实际上是将登录详细信息发送到另一个xhtml页面进行处理。 However, if the user is wrong, the page still shows. 但是,如果用户输入错误,页面仍会显示。

This is my code 这是我的代码

Index.xhtml Index.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://xmlns.jcp.org/jsf/html">
<h:head>
    <title>Index</title>
</h:head>
<h:body>
    <h:form>
        <p>Login</p>
        <h:inputText value="#{jsfbean.username}"/>
        <h:inputText value="#{jsfbean.password}"/>
        <h:commandButton action="#{jsfbean.message}" value="Results Page"/>
    </h:form>
</h:body>
</html>

Navigation rule 导航规则

<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="2.2"
          xmlns="http://xmlns.jcp.org/xml/ns/javaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee    http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">


<navigation-rule>
    <from-view-id>>index.xhtml</from-view-id>
    <navigation-case>
        <from-action>#{jsfbean.getMessage}</from-action>
        <from-outcome>Success</from-outcome>
        <to-view-id>result.xhtml</to-view-id>
    </navigation-case>
    <navigation-case>
        <from-action>#{jsfbean.getMessage}</from-action>
        <from-outcome>Fail</from-outcome>
        <to-view-id>index.xhtml</to-view-id>
    </navigation-case>
</navigation-rule>

jsf bean jsf bean

 public String getMessage() {
    if(getUser(this.username,this.password)==true){
        this.userID = aUser.getUserid();
        this.secqn = aUser.getSecqn();
        this.secans = aUser.getSecans();
        return "Success";
    }else{
        return "Fail";
    }
}

结构体

You are simply redirecting to another page when user enters his username and password. 当用户输入用户名和密码时,您只是在重定向到另一个页面。

1)You need to modify your action: 1)您需要修改操作:

 <h:form>
        <p>Login</p>
        <h:inputText value="#{jsfbean.username}"/>
        <h:inputText value="#{jsfbean.password}"/>
        <h:commandButton action="#{jsfbean.authenticateUser}" value="Results Page"/>
    </h:form>

2) Write the action method inside your bean 2)在您的bean中编写action方法

    public String authenticateUser(){
    if (username!=null&&password!=null) {
        // Write your business logic here
        if (username.equals("username")&&password.equals("password")) {
            return "SUCCESS";// In your case it is result
        }
    }
    return "LOGIN";
}

3)Add the navigation rule 3)添加导航规则

    <navigation-rule>
            <from-view-id>/pages/*</from-view-id>
            <navigation-case>
                <from-outcome>LOGIN</from-outcome>
                <to-view-id>/pages/public/login.xhtml</to-view-id>
            </navigation-case>
            <navigation-case>
                <from-action>#{authenticateController.authenticateUser}</from-action>
                <from-outcome>LOGIN</from-outcome>
                <to-view-id>/pages/public/login.xhtml</to-view-id>
            </navigation-case>
            <navigation-case>
                <from-action>#{authenticateController.authenticateUser}</from-action>
                <from-outcome>SUCCESS</from-outcome>
                <to-view-id>/pages/private/home.xhtml</to-view-id>
                <redirect/>
            </navigation-case>
</navigation-rule>

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

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