Buscar
Social
Ofertas laborales ES

Foro sobre Java EE > actionListener commandButton

El evento actionListener de commandButton no llama a (formBean.actualizaEstado), pero si hago esto si lo llama <h:outputText value="#{formBean.actualizaEstado}".....
Cual seria el problema con el evento del commandButton?
tambien probé lo mismo con el evento action
<h:form id="form2">
<p:selectOneRadio id="options" value="#{formBean.estado}">
<f:selectItem itemLabel="Presente" itemValue="presente" />
<f:selectItem itemLabel="Ausente sin aviso" itemValue="ausente sin aviso" />
<f:selectItem itemLabel="Ausente con aviso" itemValue="ausente con aviso" />
</p:selectOneRadio>
<p:commandButton value="Aceptar" update=":form:dataTable" id="boton"
icon="ui-icon-gear" oncomplete="dlgEstado.hide()"
actionListener="#{formBean.actualizaEstado}"/>
</h:form>

abril 12, 2013 | Registered Commenterdannyverm

No me queda muy claro tu problema. Tu action handler debería ser invocado en un caso como este:


<p:commandButton value="Guardar"
actionListener="#{formBean.actualizaEstado}
update=":form:dataTable" id="boton"
icon="ui-icon-gear" oncomplete="dlgEstado.hide()"/>

asegúrate que el método en el backing bean tenga el siguiente "signature":


public void actualizarEstado(ActionEvent event) {
// código para actualizar
}

abril 12, 2013 | Registered Commenterantoniovl

el metodo es el mismo que describes...
mi face-config es el siguiente
<managed-bean>
<managed-bean-name>tableBean</managed-bean-name>
<managed-bean-class>beans.TableBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>

te paso el codigo jsf...

<h:form id="form">

<p:dataTable id="dataTable">
..... esta es la tabla
</p:dataTable>

<p:dialog id="dialog1" header="Paciente" widgetVar="dlgEstado" resizable="false"
showEffect="clip" hideEffect="explode">
<h:panelGrid id="display1" columns="1">
<h:form>
<p:selectOneRadio id="options" value="#{tableBean.estado}">
<f:selectItem itemLabel="Presente" itemValue="presente" />
<f:selectItem itemLabel="Ausente sin aviso" itemValue="ausente sin aviso" />
<f:selectItem itemLabel="Ausente con aviso" itemValue="ausente con aviso" />
</p:selectOneRadio>

<p:commandButton value="Aceptar" update=":form:panel" id="boton"
icon="ui-icon-gear"
actionListener="#{tableBean.actualizaEstado}"/>
</h:form>
</h:panelGrid>
</p:dialog>
</h:form>

abril 13, 2013 | Registered Commenterdannyverm



<managed-bean>
<managed-bean-name>tableBean</managed-bean-name>
<managed-bean-class>beans.TableBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>

Estás empleando JSF 1.x? Si tienes JSF 2.x puedes prescindir de declarar los managed beans dentro de faces-config.xml.

Por favor pon el código del backing bean.

abril 13, 2013 | Registered Commenterantoniovl

Intuyo que este puede ser el problema.

Aqui. el ej Tal como propone antoniovlf Mas arriba. Correcto
public void actualizarEstado(ActionEvent event) {
// código para actualizar
}

Tener en cuenta que el método no debe retornar nada, debe ser void, siempre para usar el actionListener...

abril 15, 2013 | Unregistered Commentergrafity

les comento que estoy trabajando con netbeans 7.2...
mi backing bean es el siguiente

public void ActualizaEstado(ActionEvent event) {
con = new Conexion();
String update = "UPDATE cita SET estado='" + estado + "' WHERE cit_cod=" + paciente.getCodigo();
con.Guardar(update);
}

abril 15, 2013 | Registered Commenterdannyverm

Una disculpa por la tardanza en contestar. Esta semana estuvo muy cargada de trabajo.

Aquí veo que tienes esto en la página:

<p:commandButton value="Aceptar" update=":form:panel" id="boton"
icon="ui-icon-gear"
actionListener="#{tableBean.actualizaEstado}"/>

y esto en el backing bean:


public void ActualizaEstado(ActionEvent event) {
con = new Conexion();
String update = "UPDATE cita SET estado='" + estado + "' WHERE cit_cod=" + paciente.getCodigo();
con.Guardar(update);
}

Si estoy leyendo correctamente, estás invocando un método que NO existe: Cambia el nombre del método en el backing bean a


public void actualizaEstado(ActionEvent event) {
con = new Conexion();
String update = "UPDATE cita SET estado='" + estado + "' WHERE cit_cod=" + paciente.getCodigo();
con.Guardar(update);
}

(que empiece con "a" minúscula).

Comentario extra:
- Como convención, los nombres de los métodos deberían comenzar con letra minúscula.

Saludos

abril 21, 2013 | Registered Commenterantoniovl