Foros del Web » Programación para mayores de 30 ;) » Java »

Action en jsf

Estas en el tema de Action en jsf en el foro de Java en Foros del Web. Leí un poco de Struts y me quedaba claro que cuando obtengo una accion "declaro" una clase que manejara esa accion y esta clase a ...
  #1 (permalink)  
Antiguo 02/10/2009, 17:02
Avatar de xlugo2002  
Fecha de Ingreso: noviembre-2002
Ubicación: Puebla, México
Mensajes: 474
Antigüedad: 21 años, 5 meses
Puntos: 0
Action en jsf

Leí un poco de Struts y me quedaba claro que cuando obtengo una accion "declaro" una clase que manejara esa accion y esta clase a su vez ve devolvera otra accion SUCESS, etc...

<package name="default" extends="struts-default">
<action name="HelloWorld" class="vaannila.HelloWorld">
<result name="SUCCESS">/success.jsp</result>
</action>
</package>
</struts>

Bueno, pues estoy intentando comprender lo mismo pero en JSF 1.2:

<faces-config>
<managed-bean>
<managed-bean-name>StoreNameBean</managed-bean-name>
<managed-bean-class>roseindia.PersonBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<navigation-rule>
<from-view-id>/pages/inputname.jsp</from-view-id>
<navigation-case>
<from-outcome>result</from-outcome>
<to-view-id>result.jsp</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>

No entiendo como se "conecta" el Bean y la accion , gracias.
En struts si tuviera
otra accion añadiria:
<action name="HelloWorldII" class="vaannila.HelloWorldII">
<result name="SUCCESS">/successII.jsp</result>
</action>

¿Pero en JSF como asocio una accion con un "manejador (JavaBean)"?
SI alguien sabe como se hace lo de Struts 2 en JSF 1.2 se lo agradeceria.

Última edición por xlugo2002; 02/10/2009 a las 17:09
  #2 (permalink)  
Antiguo 02/10/2009, 18:31
 
Fecha de Ingreso: marzo-2009
Mensajes: 37
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Action en jsf

Hola.

Si tu estas en la pagina: inputname.jsp y quieres ir a result.jsp una opción seria poner un boton o un enlace en inputname.jsp y ahi decrile q al dar clic en cualquiera de esos componentes ejecute la acción result para ir a la pagina que apunta eso seria de la siguiente forma:
Código:
<h:commandButton action="result"/>
al dar clic en ese elemento te lleva a la pagina q apunta.

Yo declaro mis reglas de navegación de la siguiente forma:
Código:
    <navigation-rule>
        <navigation-case>
            <from-outcome>paginaPrincipal</from-outcome>
            <to-view-id>/Vistas/Sistema/Principal.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>
solo el nombre de la acción que en este caso es: paginaPrincipal y la pagina q va a mostrarse al ejecutar dicha acción que en este caso es Principal.jsp con esto esta acción la puedo ejecutar desde cualquier otra pagina de la misma forma que te mostre.

Ahora como haces referencia a un Bean:
Imaginate que deseas ir a la pagina Principal pero esto desde un Bean:
en tu bean: StoreNameBean declararias un metodo por ejemplo:
Código:
    public String accionMenu() {
            // Hacer algo aqui y despues ir a la pagina principal
        return "paginaPrincipal";
    }
y desde la pagina quedaria algo asi:
Código:
<h:commandButton action="#{StoreNameBean.accionMenu}"/>
esto tiene el mismo comportamiento al dar clic en el elemento te lleva a la pagina principal..

Espero sea lo que necesitas y te sirva...

Saludos.
  #3 (permalink)  
Antiguo 05/10/2009, 11:29
Avatar de xlugo2002  
Fecha de Ingreso: noviembre-2002
Ubicación: Puebla, México
Mensajes: 474
Antigüedad: 21 años, 5 meses
Puntos: 0
Respuesta: Action en jsf

Hola, pues necesito una input.jsp con un formulario, digamos usuario/clave, esos datos que se pasen mediante una action "logeo", un BEAN debe recibir esos datos y entonces devolver un SUCESS o FAILED para entonces mostar un logeado.jsp o un noautorizado.jsp


input.jsp
<h:commandButton action="logeo"/>


tons la accion logeo debe "cacharla" un BEAN y ese Bean regresar si se logeo o no. ¿Deberia parecerse a lo de abajo?

<navigation-rule>
<from-view-id>/pages/input.jsp</from-view-id>
<navigation-case>
<from-action>#{GetNameBean.beanLogea}</from-action>
<from-outcome>SUCESS</from-outcome>
<to-view-id>logeado.jsp</to-view-id>
<from-outcome>FAILED</from-outcome>
<to-view-id>noautorizado.jsp</to-view-id>
</navigation-case>
</navigation-rule>

Última edición por xlugo2002; 05/10/2009 a las 11:44
  #4 (permalink)  
Antiguo 05/10/2009, 14:42
 
Fecha de Ingreso: marzo-2009
Mensajes: 37
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Action en jsf

Hola.

Para hacer lo q quieres hay varios metodos pero algo que se acerca a lo que dices seria:

input.jsp
Código:
<h:commandButton action="usuarioBean.accionUsuario"
  actionListener="#{usuarioBean.identificarUsuario}/>
y en el bean:
Código:
 
 private String accionUsuario;

public void identificarUsuario(ActionEvent actionEvent) {
 // Checamos  el usuario y clave
 if (this.getUsuarioConectado().getId().equals(usuario) &
 this.getUsuarioConectado().getClave().equals(clave)) {

     this.accionUsuario = "SUCESS";

                } else {

this.accionUsuario = "FAILED";

        }
    }
A eso agregarias su respectivo get y set de la accionUsuario.

en las reglas de navegación:
Código:
    <navigation-rule>
        <navigation-case>
            <from-outcome>SUCESS</from-outcome>
            <to-view-id>logeado.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>

    <navigation-rule>
        <navigation-case>
            <from-outcome>FAILED</from-outcome>
            <to-view-id>noautorizado.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>
Bueno esta es una forma esactamente como tu quieres yo no lo e hecho espero que alguien mas te pueda ilustrar como lo podrias hacer...
  #5 (permalink)  
Antiguo 06/10/2009, 14:42
Avatar de xlugo2002  
Fecha de Ingreso: noviembre-2002
Ubicación: Puebla, México
Mensajes: 474
Antigüedad: 21 años, 5 meses
Puntos: 0
Respuesta: Action en jsf

Hola, ya me funcionó ; mira necesito hacer un formulario con varios campos con una biblioteca de tlds propia asi:

<form name="userCreateForm" action="crearusuario.jsp" method="post">
........................
........................
........................

<bbUI:dataElement label="Nombre(s)" required="true">
<input maxlength="100" enabled="1" size="30" type="text" name="userFirstName" value="">
</bbUI:dataElement>

........................
........................

<bbUI:stepSubmit number="3" title="Enviar" />

Es decir en la vista no empleo las tlds de JSF si no unas propias,

¿Pero como asocio el action ?
<h:commandButton> en contra de <bbUI:stepSubmit number="3" title="Enviar" />


y como mapeo mis campos de formulario con los de la clase :

<h:inputText id="user" value="#{helloBean.usuario}" >
en contra de
<bbUI:dataElement label="Nombre(s)" required="true">
<input maxlength="100" enabled="1" size="30" type="text"
name="userFirstName" value="">
</bbUI:dataElement>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:02.