Удаление строки динамически после выбора - PullRequest
0 голосов
/ 04 ноября 2011

У меня проблемы с попыткой динамического удаления строки в таблице данных.Основываясь на этой статье:

JSF 2.0 Динамическое удаление компонентов

Существует ли способ автоматического обновления таблицы данных после выбора строки в 1 таблице данных идобавить объект этой конкретной строки в другую таблицу данных;Это означает, что если я выберу «A» и нажму кнопку «добавить», «A» появится в моей второй таблице данных, и моя первая таблица данных, которая изначально содержит «A», обновится, и она будет удалена из таблицы.

Это то, что у меня есть:

Index.xhtml

<p:column> <h:commandLink value ="selection" action="#{usuariosGruposBean.selectionOfUserObject}">
<f:setPropertyActionListener target="#{usuariosGruposBean.user}" value="#{users}"/></h:commandLink>
</p:column>

UserGroup Bean

 public void selectionOfUserObject() {
        var1 = user.getId_usuario();
    }

public void testMethod() {
        listOfUsuarios = getListOfUsuarios();
        listOfUserGroups = getListOfUserGroups();
        selectionOfUserObject();

        if(listOfUsuarios.get(var1).equals(listOfUserGroups.get(var1))) {
            removeUsuarios();
        }
        else {
            System.out.println("Did not work");
        }
    }
}



public void finishAddUsuariosGrupos() {
        this.grps = grpDAO.getGrps(var2);
        this.user = userDAO.getUsuarios(var1);

        this.userGroups.setId_grupo(var2);
        this.userGroups.setId_usuario(var1);
        this.userGroups.setGroup(grps);
        this.userGroups.setUser(user);
        userGrpDAO.saveUsuariosGrupos(userGroups);
        testMethod();

    }

Iизменил мой предыдущий метод для testMethod После запуска приложения я получаю эту ошибку сейчас:

WARNING: #{usuariosGruposBean.finishAddUsuariosGrupos}: java.lang.IndexOutOfBoundsException: Index: 125, Size: 3
javax.faces.FacesException: #{usuariosGruposBean.finishAddUsuariosGrupos}: java.lang.IndexOutOfBoundsException: Index: 125, Size: 3
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
    at javax.faces.component.UICommand.broadcast(UICommand.java:315)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:636)

Я добавил диаграмму, чтобы уточнить, чего я пытаюсь достичь.Я не использую кнопку «обновить», чтобы вручную обновить таблицу данных.Я на самом деле пытаюсь сделать следующее:

  • выделение строки с помощью простых данных таблица данных "выбор одной строки"
  • нажмите кнопку добавления
  • обновления таблицы данныхсам.

enter image description here

Ответы [ 2 ]

0 голосов
/ 04 ноября 2011

Все, что вам нужно, это использовать ajax. Возможно, вы захотите использовать библиотеку со встроенной поддержкой ajax, такую ​​как primefaces и richface. Затем вы будете использовать свойство update вашей кнопки для немедленного обновления таблиц данных.

0 голосов
/ 04 ноября 2011

Я бы предложил использовать теги AJAX для достижения этой цели. Посмотрите на использование тега f: ajax.

Вы также можете использовать теги a4J: support для динамического «обновления» содержимого в определенном контейнере. a4J: commandLink и a4j: commandButton - это еще одна опция для использования и обновления контента. Посмотрите на эти теги, так как есть множество примеров в Интернете. Кстати, теги «a4J» являются частью RichFaces API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...