簡體   English   中英

JSF使用AJAX揭示表單

[英]JSF reveal form with AJAX

我想知道這是否可能。 我有一個從用戶接收ID和密碼的登錄表單。 如果在后端簽出,則會顯示另一種形式。 到目前為止,我實際上是將登錄詳細信息發送到另一個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>

導航規則

<?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

 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";
    }
}

結構體

當用戶輸入用戶名和密碼時,您只是在重定向到另一個頁面。

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)在您的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)添加導航規則

    <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