Foro sobre Java EE > actionListener commandButton
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
}
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>
<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.
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...
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);
}
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
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>