Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 5th, 2012  |  syntax: None  |  size: 13.73 KB  |  hits: 14  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Troubles with primefaces p:datatable in combination with p:dialog
  2. <html xmlns="http://www.w3.org/1999/xhtml"
  3. xmlns:f="http://java.sun.com/jsf/core"
  4. xmlns:h="http://java.sun.com/jsf/html"
  5. xmlns:p="http://primefaces.org/ui"
  6. xmlns:ui="http://java.sun.com/jsf/facelets"
  7. xmlns:sec="http://www.springframework.org/security/facelets/tags">
  8. <h:body>
  9.  
  10. <ui:composition template="../template/commonTemplate.xhtml">
  11.     <ui:define name="body">
  12.  
  13.         <h:form id="formTable">
  14.             <div class="largeText alignLeft"
  15.                 style="min-width:600px; width: 100%; margin: 0 auto;">
  16.  
  17.                 <p:panel header="Benutzerübersicht" styleClass="largeText" >  
  18.  
  19.                     <!-- ERROR MESSAGES -->
  20.                     <div class="largeText alignLeft" style="width: 600px;">
  21.                         <p:messages id="messages" />
  22.                     </div>
  23.  
  24.                     <div style="height: 10px;">
  25.                     </div>
  26.  
  27.  
  28.                     <!-- ========================================================================= -->
  29.                     <!-- =======================DATATABLE USER OVERVIEW ========================== -->
  30.                     <!-- ========================================================================= -->
  31.  
  32.                     <p:dataTable var="user"
  33.                                  widgetVar="userTable"
  34.                                  value="#{benutzerBean.userTableData}"
  35.                                  filteredValue="#{benutzerBean.filteredTableData}"
  36.                                  emptyMessage="Keine Daten verfügbar"
  37.                                  paginator="true" rows="25"  
  38.                                      paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"  
  39.                                      rowsPerPageTemplate="25,50,100"
  40.  
  41.                                      >
  42.  
  43.                             <f:facet name="header" style="background:white;">  
  44.                                 <p:outputPanel style="background:white;" >
  45.  
  46.  
  47.                                     <div class="floatRight" >
  48.                                         <h:outputText value="Suche:  " />  
  49.                                         <p:inputText id="globalFilter" onkeyup="userTable.filter()" style="width:150px" />
  50.                                     </div>
  51.                                 </p:outputPanel>
  52.                             </f:facet>
  53.  
  54.                             <p:column id="bngroup_id"  filterStyle="display:none"
  55.                                       sortBy="#{user.benutzergruppe.name}"
  56.                                       filterBy="#{user.benutzergruppe.name}"  
  57.                                       headerText="Benutzergruppe"
  58.                                       filterMatchMode="contains">
  59.                                 <h:outputLabel value="#{user.benutzergruppe.name}" />
  60.                             </p:column>
  61.  
  62.                             <p:column id="firstname_id" filterStyle="display:none"
  63.                                       sortBy="#{user.vorname}"
  64.                                       filterBy="#{user.vorname}"  
  65.                                       headerText="Vorname"
  66.                                       filterMatchMode="contains" >
  67.                                 <h:outputLabel value="#{user.vorname}" />
  68.                             </p:column>
  69.  
  70.                             <p:column id="lastname_id" filterStyle="display:none"
  71.                                       sortBy="#{user.nachname}"
  72.                                       filterBy="#{user.nachname}"  
  73.                                       headerText="Nachname"
  74.                                       filterMatchMode="contains" >
  75.                                 <h:outputLabel value="#{user.nachname}" />
  76.                             </p:column>
  77.  
  78.                             <p:column id="username_id" filterStyle="display:none"
  79.                                       sortBy="#{user.benutzername}"
  80.                                       filterBy="#{user.benutzername}"
  81.                                       headerText="Benutzername"  
  82.                                       filterMatchMode="contains">
  83.                                 <h:outputLabel value="#{user.benutzername}" />
  84.                             </p:column>
  85.  
  86.                             <p:column id="email_id" filterStyle="display:none"
  87.                                       sortBy="#{user.email}"
  88.                                       filterBy="#{user.email}"  
  89.                                       headerText="E-mail"
  90.                                       filterMatchMode="contains" >  
  91.                                 <h:outputLabel value="#{user.email}" />
  92.                             </p:column>
  93.  
  94.                             <p:column id="aktiv_id" filterStyle="display:none"
  95.                                       sortBy="#{user.aktiv}"
  96.                                       filterBy="#{user.aktiv}"  
  97.                                       headerText="Aktiv"
  98.                                       filterMatchMode="contains" >
  99.                                 <h:outputLabel value="#{user.aktiv}" />
  100.                             </p:column>
  101.  
  102.                             <p:column id="edit_id"
  103.                                       style="width:80px;"
  104.                                       styleClass="alignCenter" >
  105.  
  106.                                 <p:commandButton value="bearbeiten"  update=":formTable:edit" oncomplete="editDialog.show()" style="font-size:10px;">
  107.                                     <f:setPropertyActionListener target="#{benutzerBean.selectedUser}" value="#{user}" />
  108.                                 </p:commandButton>
  109.                             </p:column>
  110.  
  111.                             <p:column id="delete_id"
  112.                                       style="width:80px;"
  113.                                       styleClass="alignCenter"  >
  114.                                 <p:commandButton value="löschen" update=":formTable:deleteUserdialog" oncomplete="deleteUserdialog.show()"  style="font-size:10px;">
  115.                                     <f:setPropertyActionListener target="#{benutzerBean.selectedUser}" value="#{user}" />
  116.                                 </p:commandButton>
  117.                             </p:column>
  118.                     </p:dataTable>
  119.  
  120.  
  121.                     <!-- ========================================================================= -->
  122.                     <!-- =======================  EDIT USER DIALOG      ========================== -->
  123.                     <!-- ========================================================================= -->
  124.  
  125.                     <p:dialog id="editUserDialog" header="Benutzer bearbeiten" widgetVar="editDialog"
  126.                               resizable="false" modal="true" showEffect="clip" hideEffect="clip" >
  127.                         <p:panelGrid id="edit"  columns="2" style="width:400px;">
  128.  
  129.                                 <h:outputText value="Benutzergruppe" />
  130.                                 <h:outputText id="edit_dlg_bngrp" value="#{benutzerBean.selectedUser.benutzergruppe.name}" />
  131.  
  132.                                 <h:outputText value="Benutzername:" />
  133.                                 <h:outputText id="edit_dlg_username" value="#{benutzerBean.selectedUser.benutzername}" />
  134.  
  135.                                 <h:outputText value="Vorname:" />
  136.                                 <p:inputText id="edit_dlg_firstname" styleClass="width_100" value="#{benutzerBean.selectedUser.vorname}" />
  137.  
  138.                                 <h:outputText value="Nachname:" />
  139.                                 <p:inputText id="edit_dlg_lastname" styleClass="width_100" value="#{benutzerBean.selectedUser.nachname}"  />
  140.  
  141.  
  142.                                 <h:outputText value="Email" />
  143.                                 <p:inputText id="edit_dlg_email" styleClass="width_100" value="#{benutzerBean.selectedUser.email}" />
  144.  
  145.                                 <p:commandButton id="save" value="Speichern"  process="editUserDialog"  actionListener="#{benutzerBean.submitEditUser}" oncomplete="editDialog.hide()" />
  146.                                 <p:commandButton value="Abbrechen" type="reset" onclick="editDialog.hide()" />
  147.  
  148.                         </p:panelGrid>
  149.                     </p:dialog>
  150.  
  151.  
  152.  
  153.  
  154.  
  155.                     <!-- ========================================================================= -->
  156.                     <!-- =======================  DELETE USER DIALOG    ========================== -->
  157.                     <!-- ========================================================================= -->  
  158.                     <p:dialog id="deleteUserdialog" header="Benutzer erstellen" widgetVar="deleteUserdialog" resizable="false" modal="true" >
  159.                                 <h:outputText id="delete" value="#{benutzerBean.selectedUser.vorname} löschen" />
  160.                     </p:dialog>
  161.                 </p:panel>
  162.             </div>
  163.         </h:form>
  164.     </ui:define>
  165. </ui:composition>
  166.        
  167. @Controller
  168. @ManagedBean
  169. @Scope(value="view")
  170. public class BenutzerBean {
  171.  
  172. @Autowired
  173. BenutzerService benutzerService;
  174.  
  175.  
  176. private List<Benutzer> userTableData = new ArrayList<Benutzer>();
  177. private List<Benutzer> filteredTableData;
  178. private Benutzer selectedUser;
  179.  
  180.  
  181. public BenutzerBean(){
  182. }
  183.  
  184. @PostConstruct
  185. public void populateTable(){
  186.     userTableData = benutzerService.getAllBenutzer();
  187. }
  188.  
  189. public void submitEditUser(){
  190.     saveUser(selectedUser);
  191. }
  192.  
  193. private void saveUser(Benutzer benutzer){
  194.     benutzerService.saveBenutzer(benutzer);
  195.     populateTable();
  196. }
  197.  
  198. public List<Benutzer> getFilteredTableData() {
  199.     return filteredTableData;
  200. }
  201.  
  202. public void setFilteredTableData(List<Benutzer> filteredTableData) {
  203.     this.filteredTableData = filteredTableData;
  204. }
  205.  
  206. public void setUserTableData(List<Benutzer> userTableData) {
  207.     this.userTableData = userTableData;
  208. }
  209.  
  210. public List<Benutzer> getUserTableData(){
  211.     return userTableData;
  212. }
  213.  
  214. public Benutzer getSelectedUser() {
  215.     return selectedUser;
  216. }
  217.  
  218. public void setSelectedUser(Benutzer selectedUser) {
  219.     this.selectedUser = selectedUser;
  220. }
  221.        
  222. @Entity(name="BENUTZER")
  223. public class Benutzer implements Serializable {
  224.  
  225.  
  226. @Id
  227. @GeneratedValue(strategy=GenerationType.AUTO)
  228. @Column(name="ID")
  229. private Long id;
  230.  
  231.  
  232. @ManyToOne
  233. @JoinColumn(name = "BENUTZERGRUPPEN_ID")
  234. @NotNull
  235. private Benutzergruppe benutzergruppe;
  236.  
  237.  
  238. @Column(name="VORNAME")
  239. @NotNull
  240. @Length(min=3, message="vorn")
  241. private String vorname;
  242.  
  243.  
  244. @Column(name="NACHNAME")
  245. @NotNull
  246. @Length(min=3, message="nach")
  247. private String nachname;
  248.  
  249.  
  250. @Column(name="BENUTZERNAME")
  251. @NotNull
  252. @Length(min=4, message="benu")
  253. private String benutzername ;
  254.  
  255.  
  256. @Column(name="PASSWORT")
  257. private String passwort;
  258.  
  259.  
  260. @Column(name="EMAIL")
  261. private String email;
  262.  
  263.  
  264. @Column(name="AKTIV")
  265. private boolean aktiv = true;
  266.  
  267.  
  268. @Column(name="GELOESCHT")
  269. @Type(type="org.joda.time.contrib.hibernate.PersistentDateTime")
  270. private DateTime deleted;
  271.  
  272.  
  273. @ManyToMany ( fetch= FetchType.EAGER)
  274. @JoinTable( name="BENUTZER_ROLLEN",
  275.             joinColumns={@JoinColumn(name="BENUTZER_ID")} ,
  276.             inverseJoinColumns={@JoinColumn(name="ROLLE_ID")}
  277.           )
  278. public List<Rolle> rollen = new LinkedList<>();
  279.  
  280.  
  281. /////////////////////////////
  282. //  GETTER SETTER
  283. ///////////////////////////
  284.  
  285. public Benutzer(){}
  286.  
  287. public Benutzer(Benutzergruppe benutzergruppe ,String nachname, String vorname, String username,
  288.         String password, String email,  boolean enabled) {
  289.     this();
  290.     this.benutzergruppe = benutzergruppe;
  291.     this.nachname = nachname;
  292.     this.vorname = vorname;
  293.     this.benutzername = username;
  294.     this.passwort = password;
  295.     this.email = email;
  296.     this.aktiv = enabled;
  297. }
  298.  
  299.  
  300.  
  301. //--------- OTHER METHODS ---------------
  302.  
  303.  
  304. public void deleteUser(){
  305.     aktiv = false;
  306.     setDeleted(DateTime.now());
  307. }
  308.  
  309. public boolean isUserDeleted(){
  310.     return deleted != null;
  311. }
  312.  
  313. public void disableUser(){
  314.     setAktiv(false);
  315. }
  316.  
  317. public void enableUser(){
  318.     setAktiv(true);
  319. }
  320.  
  321. public void addRole(Rolle role){
  322.  
  323.     if(role == null)
  324.         throw new IllegalArgumentException("Add Role: role must not be null");
  325.  
  326.     if(!rollen.contains(role)){
  327.         rollen.add(role);
  328.         role.addBenutzer(this);
  329.     }
  330. }
  331.  
  332. public void removeRole( Rolle role){
  333.     if(role == null)
  334.         throw new IllegalArgumentException("Remove Role: role must not be null");
  335.  
  336.     if(rollen.contains(role)){
  337.         rollen.remove(role);
  338.         role.removeBenutzer(this);
  339.     }
  340.  
  341. }
  342.  
  343.  
  344. //============================================
  345. // GETTER SETTER
  346. //=========================================
  347.  
  348. public Long getId() {
  349.     return id;
  350. }
  351.  
  352.  
  353. public void setId(Long benutzerId) {
  354.     this.id = benutzerId;
  355. }
  356.  
  357. public Benutzergruppe getBenutzergruppe() {
  358.     return benutzergruppe;
  359. }
  360.  
  361. public void setBenutzergruppe(Benutzergruppe benutzergruppe) {
  362.     this.benutzergruppe = benutzergruppe;
  363. }
  364.  
  365. public String getNachname() {
  366.     return nachname;
  367. }
  368.  
  369. public void setNachname(String nachname) {
  370.     this.nachname = nachname;
  371. }
  372.  
  373. public String getVorname() {
  374.     return vorname;
  375. }
  376.  
  377. public void setVorname(String vorname) {
  378.     this.vorname = vorname;
  379. }
  380.  
  381. public String getBenutzername() {
  382.     return benutzername;
  383. }
  384.  
  385. public void setBenutzername(String username) {
  386.     this.benutzername = username;
  387. }
  388.  
  389. public String getPasswort() {
  390.     return passwort;
  391. }
  392.  
  393. public void setPasswort(String password) {
  394.     this.passwort = password;
  395. }
  396.  
  397. public String getEmail() {
  398.     return email;
  399. }
  400.  
  401. public void setEmail(String email) {
  402.     this.email = email;
  403. }
  404.  
  405. public boolean isAktiv() {
  406.     return aktiv;
  407. }
  408.  
  409. private void setAktiv(boolean enabled) {
  410.     this.aktiv = enabled;
  411. }
  412.  
  413. public List<Rolle> getRollen() {
  414.     return Collections.unmodifiableList(rollen);
  415. }
  416.  
  417. public void setRollen(List<Rolle> rollen) {
  418.     this.rollen = rollen;
  419. }
  420.  
  421. public DateTime getDeleted() {
  422.     return deleted;
  423. }
  424.  
  425. private void setDeleted(DateTime timestamp) {
  426.     this.deleted = timestamp;
  427. }
  428.        
  429. <p:commandButton value="bearbeiten"  update=":formTable:edit" oncomplete="editDialog.show()" style="font-size:10px;">