Неуправляемая маршрутизация Bean не работает? - PullRequest
0 голосов
/ 28 апреля 2019

У меня возникают проблемы с неявной навигацией по управляемому бину, страница представляет собой страницу входа, содержащую поля имени пользователя и пароля, используемые для проверки с помощью базы данных phpmyadmin;

Мой управляемый бин определяется следующим образом:

package backManagedBean;

import java.io.Serializable;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;

import com.esprit.entities.Users;
import com.esprit.service.AuthenticationService;


@SuppressWarnings({ "serial", "unused" })
@RequestScoped
@ManagedBean(name="loginManagedBean", eager=true )
public class loginManagedBean implements Serializable {

    /**
     * 
     */

    private static Users connectedUser;
    private String emailField;
    private String passwordField;
    @EJB
    AuthenticationService authService;


    public String getEmailField() {
        return emailField;
    }
    public void setEmailField(String emailField) {
        this.emailField = emailField;
    }
    public String getPassworField() {
        return passwordField;
    }
    public void setPassworField(String passwordField) {
        this.passwordField = passwordField;
    }
    public AuthenticationService getAuthService() {
        return authService;
    }
    public void setAuthService(AuthenticationService authService) {
        this.authService = authService;
    }

    public String login(){
        //connectedUser = authService.authenticate(emailField, passwordField);
        return "/Back/index?faces-redirect=true";
    }



}

Обновление страницы и запрос выполняются нормально, и вы можете видеть журнал сервера wildfly, как определено в персистентности для hibernate.show_sql.И все же он возвращает страницу входа в систему, поскольку функция login () ничего не возвращает.

login.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:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://xmlns.jcp.org/jsf/html">
  <ui:composition template="../template/facesTemplate.xhtml">
    <ui:define name="head">
        <title>Welcome To Petroca</title>

    </ui:define>


    <ui:define name="body">
    <div class="accountbg">
        <div class="content-center">
            <div class="content-desc-center">
                <div class="container">
                    <div class="row justify-content-center">
                        <div class="col-lg-5 col-md-8">
                            <div class="card">
                                <div class="card-body">
                                    <h3 class="text-center mt-0 m-b-15"><a href="index.html"
                                            class="logo logo-admin"><img src="../assets/images/logo-dark.png" height="30"
                                                alt="logo" /></a></h3>
                                    <h4 class="text-muted text-center font-18"><b>Sign In</b></h4>
                                    <div class="p-2">
                                        <h:form class="form-horizontal m-t-20" >
                                            <div class="form-group row">
                                                <div class="col-12"><h:inputText class="form-control" type="text" required="" value="#{loginManagedBean.emailField}" placeholder="Username" /></div>
                                            </div>
                                            <div class="form-group row">
                                                <div class="col-12">
                                                <h:inputSecret class="form-control" required="" value="#{loginManagedBean.passworField}" placeholder="Password" /></div>
                                            </div>
                                            <div class="form-group text-center row m-t-20">
                                                <div class="col-12">
                                                    <h:button class="btn btn-primary btn-block waves-effect waves-light" action="#{loginManagedBean.login()}">
                                                        Log In
                                                    </h:button>
                                                </div>
                                            </div>
                                            <div class="form-group m-t-10 mb-0 row">
                                                <div class="col-sm-7 m-t-20"><a href="passwordRecovery.jsf"
                                                        class="text-muted"><i class="mdi mdi-lock"></i> Forgot your
                                                        password?</a></div>
                                            </div>
                                        </h:form>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div><!-- end row -->
                </div>
            </div>
        </div>
    </div>
    </ui:define>

  </ui:composition> 
</html>

1 Ответ

1 голос
/ 28 апреля 2019

Я бы, наверное, использовал это:

<h:commandButton ... action="#{loginManagedBean.login}" />

То, что на самом деле должна делать ваша кнопка, это отправка формы с некоторыми данными (login / pwd) и, если все в порядке, - перенаправление на какую-то другую страницу или, если аутентификация не удалась, - скажем, на какую-то страницу с ошибкой. Так что commandButton - лучший выбор для этой цели.

<h:commandButton> создает HTML-кнопку типа <input type="submit">, которая по умолчанию отправляет родительский элемент <h:form> с помощью метода POST и вызывает действия, связанные с action или actionListener.

Вы также можете попробовать использовать свойство outcome, чтобы увидеть, имеет ли оно какое-либо значение:

<h:button ... outcome="#{loginManagedBean.login()}" />

Но в вашем случае commandButton - лучший вариант.

...