Action в primefaces не я redirecciona

Базовая страница:

<?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"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://xmlns.jcp.org/jsf/core">
    <h:head>
        <title>Facelet Title</title>
        <h:outputStylesheet library="css" name="index.css"/>
        <link href="./resources/css/GrowlInicioRed.css" rel="stylesheet" type="text/css"/>
        <link href="./resources/css/Tema.css" rel="stylesheet" type="text/css" />
    </h:head>
    <h:body>
        <div class="header">
            <h:form id="signup"
                    style="text-align: center; margin-left: 30%; margin-right: 30%;">
                <p:growl id="growl" globalOnly="true" showDetail="true" autoUpdate="true"/>

                <h:graphicImage value="imagenes/businessman223.png" width="50" height="50"/>
                <br></br><br></br>

                <p:messages autoUpdate="true"/>

                <h:panelGrid columns="2">
                    <p:outputLabel for="txtUsuario" value="Usuario"/>

                    <p:inputText id="txtUsuario" required="true" value="#{indexBean.usuario.nombre}"
                                 requiredMessage="Usuario obligatorio"/>

                    <p:outputLabel for="txtClave" value="Clave"/>

                    <p:password id="txtClave" required="true" value="#{indexBean.usuario.password}"
                                feedback="true"
                                promptLabel="Digite su contraseña Por Favor" weakLabel="Minimo"
                                goodLabel="Medio" strongLabel="Maximo" requiredMessage="Clave obligatoria"/>

                    <p:commandButton value="Iniciar Sesion" icon="ui-icon-key"                                 
                                     actionListener="#{indexBean.listenerBotonInicioDeSesion()}"
                                     process="@this txtClave,txtUsuario" 
                                     action="principal"/>
                </h:panelGrid>
            </h:form>
        </div>
    </h:body>
</html>

principal.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"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>Principal</title>
        <h:outputStylesheet library="css" name="index.css"/>
        <link href="./resources/css/GrowlInicioRed.css" rel="stylesheet" type="text/css"/>
        <link href="./resources/css/Tema.css" rel="stylesheet" type="text/css" />
        <script name="jquery/jquery.js" library="primefaces"></script>        
    </h:head>
    <h:body>
        <h:form style="width:400px;"id="Inicio-Modulo">
            <p:growl id="growl" globalOnly="true" showDetail="true"/>
            <h4>BIENVENIDO A MODULO SEFARCOL<p></p>
        </h:form>
    </h:body>
</html>
3
задан 12.04.2016, 23:02
3 ответа

Главная проблема состоит в том, что ты у UICommand <p:commandButton> есть функциональность ajax назначенная по умолчанию. Выведи эту функциональность из строя vГ - в ajax="false":

<p:commandButton value="Iniciar Sesion" icon="ui-icon-key"
    actionListener="#{indexBean.listenerBotonInicioDeSesion()}"
    process="@this txtClave,txtUsuario"
    action="principal" ajax="false" />

Также, лучше использовать action вместо actionListener, чтобы выполнять ее acciГіn UICommand и возвращать результат тебя navegaciГіn как результат в mГ©todo. Это serГ - в asГ-.

CГіdigo facelets:

<p:commandButton action="#{indexBean.inicioSesion}" ... />

CГіdigo Java:

@ManagedBean
@ViewScoped
public class IndexBean {
    public String inicioSesion() {
        /* código para validar sesión del usuario */
        return "principal";
    }
}
0
ответ дан 24.11.2019, 14:36

Правильным в случаях login, является прежде всего один <welcome-file-list> в файл web.xml, те, которые определят маршруты в случае, начался сеанс. Если будет использована Спринг Секурити, в начало сеанса он будет переслан в первую доступных маршрутов этого списка.

С другой стороны, и продолжая гипотезу, которой ты используешь Спринг Секурити, не необходимо использовать признак action в commandButton, но да необходимо дезактивировать ajax и менять тип в submit, оставаясь следующей формы:

    <p:commandButton value="Iniciar Sesion" icon="ui-icon-key"      
        actionListener="#{indexBean.listenerBotonInicioDeSesion()}"
        process="@this txtClave,txtUsuario" ajax="false" type="submit"/>

Признак action завись от, если использует или нет Спринг Секурити как framework безопасности.

0
ответ дан 24.11.2019, 14:36

Ты deberГ, - чтобы функционировать таким образом:

<p:commandButton action="#{beanManejado.accionRedireccionar}" value="Volver" />

И в твоем bean таким образом:

public String accionRedireccionar() {

    return "<carpeta_dentro_WEBINF>/pagina.xhtml?faces-redirect=true";

}
0
ответ дан 24.11.2019, 14:36

Твой код правилен, не необходимо осуществлять метод в Bean для action больше, что, чтобы делать программным твое перенаправление, но это зависит от твоей логики, однако, я чувствую, что ты не определил твои правила навигации в тебе faces-config.xml.

Ты был бы должен использовать что-то вроде следующее:

<navigation-rule>
     <from-view-id>/login.xhtml</from-view-id>
     <navigation-case>
           <from-outcome>principal</from-outcome>
           <to-view-id>/portal/index.xhtml</to-view-id>
            <redirect include-view-params="true"></redirect>
     </navigation-case>
</navigation-rule>

В самом деле, способ, в котором ты используешь actionListener и action они самые рекомендуемые.

1
ответ дан 03.12.2019, 22:39
  • 1
    Ты можешь помещать твой канал Youtube в informació n профиля, если это не много беспокойства, не помещай ссылку в каждый ответ. –  26.01.2017, 17:13
  • 2
    Хорошая идея, привет. –  26.01.2017, 18:35

Теги

Похожие вопросы