Bonjour,

Je vous expose le challenge. J'ai des utilisateurs qui peuvent avoir plusieurs roles. Je souhaite dans une page d'administration pouvoir ajouter/enlever des roles en une fois grace à des checkbox et un seul bouton submit.

Je vous donne mon code

Un immmense merci d'avance !

Quartus

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<h:dataTable binding="#{userController.roleTable}" value="#{roleController.roles}" var="role">
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Role Number"/>
                        </f:facet>
                        <h:outputText value="#{role.roleNo}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Role Description"/>
                        </f:facet>
                        <h:outputText value="#{role.roleDescription}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Sender Number"/>
                        </f:facet>
                        <h:outputText value="#{role.senderNo}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Sender Number"/>
                        </f:facet>
                        <h:selectBooleanCheckbox value="#{userController.flag}"/>
                    </h:column>
                </h:dataTable>
            <h:commandButton value="Update" action="#{userController.updateRoles}"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
@ManagedBean(name="userController")
public class UserController {
 
    @EJB
    private UserEJB userEJB;
 
    private User user = new User();
    private List<User> userList = new ArrayList<User>();
    private DataModel<User> users;
    private boolean flag;
    private UIData roleTable;
 
    @PostConstruct
    public void construct() {
        init();
    }
 
 
    public void init() {
        userList = userEJB.findUsers();
        users = new ListDataModel<User>(userList);
    }
 
    public void validateCreateUser(FacesContext context, UIComponent component, Object user)throws ValidatorException
    {
        String userNo = user.toString();
        if(!(userEJB.findUsersByUserNo(userNo)==null))
            throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "user", "The user already exists"));
    }
    public String doCreateUser(){
        user.setActive(0);
        user.setPassword("***");
        user.setAuditUserNo("E131631");
        user = userEJB.createUser(user);
        userList.add(user);
        users = new ListDataModel<User>(userList);
        return "newUser.xhtml";
    }
 
    public String doResetUser(){
        user = users.getRowData();
        user.setActive(0);
        userEJB.updateUser(user);
        userList.set(userList.indexOf(user), user);
        users = new ListDataModel<User>(userList);
        return "listUsers.xhtml";
    }
 
    public String doReadUser(){
        user = users.getRowData();
        return "editUser.xhtml";
    }
 
    public String doDeleteUser(){
        user = users.getRowData();
        userEJB.deleteUser(user);
        userList.remove(user);
        users = new ListDataModel<User>(userList);
        return "listUsers.xhtml";
    }
 
    public User getUser() {
        return user;
    }
 
    public void setUser(User user) {
        this.user = user;
    }
 
    public List<User> getUserList() {
        return userList;
    }
 
    public void setUserList(List<User> userList) {
        this.userList = userList;
    }
 
    public DataModel<User> getUsers() {
        return users;
    }
 
    public void setUsers(DataModel<User> users) {
        this.users = users;
    }
 
    public boolean isFlag() {
        Role role = (Role)roleTable.getRowData();
        System.out.println(role.getRoleDescription());
        return userEJB.doesUserHaveRole(user, role);
    }
 
    public void setFlag(boolean flag) {
        this.flag = flag;
    }
 
    public UIData getRoleTable() {
        return roleTable;
    }
 
    public void setRoleTable(UIData roleTable) {
        this.roleTable = roleTable;
    }
 
    public String updateRoles()
    {
        return "to be implemented";
    }
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
@ManagedBean(name="roleController")
@RequestScoped
public class RoleController {
 
    @EJB
    private RoleEJB roleEJB;
 
    @EJB
    private UserEJB userEJB;
 
    private Role role = new Role();
    private List<Role> roleList = new ArrayList<Role>();
    private DataModel<Role> roles;
 
    @PostConstruct
    public void construct() {
        init();
    }
 
    public void init() {
        roleList = roleEJB.findRoles();
        roles = new ListDataModel<Role>(roleList);
    }
 
    public String doReadRole(){
        role = roles.getRowData();
        return "editRole.xhtml";
    }
 
    public String doEditRole(){
        role = roles.getRowData();
        roleEJB.updateRole(role);
        roleList.set(roleList.indexOf(role), role);
        roles = new ListDataModel<Role>(roleList);
        return "listRoles.xhtml";
    }
 
    public String doCreateRole(){
        role.setRoleType(2);
        role.setUserNo(userEJB.findUsersByUserNo("E2BADMIN"));
        role.setRoleNo(roleEJB.getMaxRoleNo()+1);
        role = roleEJB.createRole(role);
        roleList.add(role);
        roles = new ListDataModel<Role>(roleList);
        return "listRoles.xhtml";
    }
 
    public String doDeleteRole(){
        role = roles.getRowData();
        roleEJB.deleteRole(role);
        roleList.remove(role);
        roles = new ListDataModel<Role>(roleList);
        return "listRoles.xhtml";
    }
 
    public Role getRole() {
        return role;
    }
 
    public void setRole(Role role) {
        this.role = role;
    }
 
    public List<Role> getRoleList() {
        return roleList;
    }
 
    public void setRoleList(List<Role> roleList) {
        this.roleList = roleList;
    }
 
    public DataModel<Role> getRoles() {
        return roles;
    }
 
    public void setRoles(DataModel<Role> roles) {
        this.roles = roles;
    }
 
}