我无法动态删除数据表中的行。基于这篇文章:
JSF 2.0 Dynamically Remove Components
在我选择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();
}
我将之前的方法修改为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)
我添加了一个图表来阐明我想要实现的目标。我没有使用“更新”按钮手动更新我的数据表。我实际上是在尝试做以下事情:
答案 0 :(得分:0)
我建议使用AJAX标签来实现这一目标。查看f:ajax标记用法。
您还可以使用a4J:支持标记来动态“更新”特定容器中的内容。 a4J:commandLink和a4j:commandButton是另一个使用和更新内容的选项。查看这些标签,因为互联网上有很多例子。顺便说一下,“a4J”标签是RichFaces API的一部分。
答案 1 :(得分:0)
你只需要使用ajax。你可能想要使用一个内置支持ajax的库,比如primefaces和richfaces。然后你会使用你的按钮的update属性来立即更新你的数据表。