Pregunta

Uso de un DataModel<MyObject>, lleno una tabla de datos de acuerdo con esta respuesta

Ahora, al final de cada línea que tiene un botón de borrar que exige un cierto método de mi frijol. Los datos se elimina limpiamente. Pero a medida que los datos se han cambiado después de la eliminación, me gustaría volver a cargar la página con el fin de reflejar los cambios.

Mi intento fue agregar una regla de navegación en faces-config.xml:

visión general /overview.jsp deletedsubscription /overview.jsp

Si tengo <redirect /> o no, de cualquier manera es no recargar o hacer cualquier otra cosa en absoluto. se borran los datos, por lo tanto, el método de la judía se llama en realidad.

Mi botón es similar al siguiente:

<h:dataTable border="1" value="#{overviewBean.overviewModel }" var="item" first="0">
    <h:column id="column13">
        <f:facet name="header">
            <h:outputText value="#{messages.overviewDeleteItem }"></h:outputText>
        </f:facet>
        <h:commandButton action="#{overviewBean.deleteItem}" value="X"/>
    </h:column>
</h:dataTable>

Configuración de la type="submit" atributo realmente resuelve el problema. Las páginas consigue vuelven a cargar.

Mi pregunta ahora: es el someter realmente necesario? No JSF (Apache MyFaces) tiene un mecanismo de uso de AJAX para eliminar la línea acaba de eliminar?

Gracias por tratar de ayudar a una JSF-novato.

¿Fue útil?

Solución

Simplemente quitar el elemento de la lista respaldo del modelo de datos. Los cambios se reflejarán en el modelo.

Básicamente:

private List<MyObject> overviewList;
private DataModel overviewModel;

public OverviewBean() {
    overviewList = overviewDAO.list();
    overviewModel = new ListDataModel(overviewList);
}

public void deleteItem() {
    MyObject myObject = (MyObject) overviewModel.getRowData();
    overviewDAO.delete(myObject);
    overviewList.remove(myObject); // See?
}

A de redireccionamiento a partir de entonces no es necesario. Si el método de acción vuelve nula (o null), irá a la misma página de todos modos.

capacidades Ajaxical se han introducido en JSF 2.0, pero si no me equivoco, todavía estás en JSF 1.x. Su mejor apuesta es entonces adoptando una tercera biblioteca de componentes partido como Ajax4jsf (actualmente parte de RichFaces), para el caso de que lo consideren necesario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top