hej,
mam proste www w icefaces. wyswietlam dane o uzytkownikach z bazy do dataTable. Mam na nich akcje typu "edit" oraz "remove". Tzn przy kazdym uzytkowniku mam w dodatkowej tabeli 2 przyciski (edit i remove). Jak klikne na edit to pojawia mi sie tryb edycji, po jej zapisaniu uaktualniaja sie dane w bazie i od razu tez w tabelce. Gorzej jest przy akcji remove-pozycja usuwana jest z bazy, ale tabela sie nie odswieza. Mam 2 klasy - jedna reprezentuje liste uzytkownikow, a druga - pojedynczego uzytkownika:
public class UsersList {
private ArrayList<UserBean> usersBeanList;
private int usersBeanListSize;
public UsersList() {
getUsersList();
}
public ArrayList<UserBean> getUsersBeanList() {
return usersBeanList;
}
public void setUsersBeanList(ArrayList<UserBean> usersBeanList) {
this.usersBeanList = usersBeanList;
}
public int getUsersBeanListSize() {
return usersBeanList.size();
}
public String login() {
return "login";
}
public void removeUser(ActionEvent ev) {
UserBean userBean = (UserBean)ev.getComponent().getAttributes().get("userBean");
//logika zwiazana z usunieciem uzytkownika z bazy
//usuwam go tez z listy
usersBeanList.remove(userBean);
}
}
private ArrayList<UserBean> getUsersList() {
//logika zwiazana z pobraniem listy uzytkownikow z bazy
return usersBeanList;
}
}
public class UserBean {
private int id;
private String name;
private String surname;
private String email;
private String phone;
private String birthdate;
private boolean showAdditionalInfo;
private boolean edit;
private boolean removed;
public UserBean() {
}
public UserBean(int id, String name, String surname, String email, String phone, String birthdate) {
this.id = id;
this.name = name;
this.surname = surname;
this.email = email;
this.phone = phone;
this.birthdate = birthdate;
}
//gettery i settery
public void saveUser() {
//logika zwiazna z zapisaniem (updatem) uzytkownika
}
}
w faces-config.xml mam:
<managed-bean>
<managed-bean-name>usersList</managed-bean-name>
<managed-bean-class>test.beans.UsersList</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>userBean</managed-bean-name>
<managed-bean-class>test.beans.UserBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
i po stronie icefaces:
<ice:dataTable
rendered="#{usersList.usersBeanListSize != 0}"
value="#{usersList.usersBeanList}"
columnClasses="columnsColumn"
var="item"
rows="#{usersList.usersBeanListSize}">
//jakies tam kolumny i wyswietlane info i potem to cale usuwanie:
<ice:column style="width:220px; height:15px;" rendered="#{auth.logged==true}">
<f:facet name="header">
<ice:outputText value="Actions"/>
</f:facet>
<div align="center">
<ice:commandButton id="remove_user" value="remove" actionListener="#{usersList.removeUser}">
<f:attribute name="userBean" value="#{item}"/>
</ice:commandButton>
</div>
</ice:column>
</ice:dataTable>
czyli wywolywana jest akcja removeUser. z bazy uzytkownik znika-ale w tabeli jest nadal widoczny. nie wiem jak to zrobic by tabela automatycznie usuwala tez te pozycje.
bede wdzieczna za wszystkie podpowiedzi i wskazowki!
pzdr,
misty