Masalah saat menambahkan bidang khusus di liferay

Saya membuat pengguna secara manual dengan membuat formulir detail pengguna dan memanggil UserLocalServiceUtil.addUser(). Semuanya berfungsi dengan baik. Saya dapat menambahkan pengguna baru. Saat mengklik tombol simpan di formulir detail pengguna saya, saya mengirimkan detail formulir ke kelas tindakan saya addUser(). Dalam metode ini saya memanggil metode berikut untuk membuat pengguna.

try {
                UserLocalServiceUtil.addUser(creatorUserId, companyId, autoPassword, password1,
                    password2, autoScreenName, screenName, emailAddress, mySite, openId,
                    locale, firstName, middleName, lastName, prefixId, suffixId, male,
                    birthdayMonth, birthdayDay, birthdayYear, jobTitle, groupIds,
                    organizationIds, roleIds, userGroupIds, sendEmail, serviceContext);


            } catch(Exception e){
                System.out.println(e.getMessage());
            }  

Pengguna membuat dengan kode di atas. Tapi masalahnya adalah saya juga ingin menambahkan nilai bidang khusus sambil menambahkan pengguna. kode untuk menambahkan custom field adalah sebagai berikut,

if(user.getExpandoBridge().hasAttribute("manager"))
                    {

                            user.getExpandoBridge().setAttribute("manager", manager);
                            System.out.println("Custom field is avaliable now !!! Update User entry ");
                    }
                    else
                    {
                            user.getExpandoBridge().addAttribute("manager");
                            user.getExpandoBridge().setAttribute("manager", manager);
                            System.out.println("Custom field is not avaliable !!! Update User entry ");
                    }

Sekarang bagaimana saya bisa mengeksekusi kode dalam metode addUser(). Masalah saya adalah saya menambahkan pengguna secara terprogram dengan memanggil UserLocalServiceUtil.addUser() jadi di sini saya tidak memiliki ID pengguna yang baru dibuat. jadi tanpa ID pengguna bagaimana saya bisa mendapatkan objek pengguna untuk pengguna baru dan menjalankan logika penyisipan bidang khusus.

Mohon sarannya..

Saya perlu membuat pengguna dengan nilai bidang khusus secara bersamaan.

Terima kasih sebelumnya..


person Vinod    schedule 04.04.2015    source sumber


Jawaban (2)


Coba ini

try {
          User newUser =  UserLocalServiceUtil.addUser(creatorUserId, companyId, autoPassword, password1,
                password2, autoScreenName, screenName, emailAddress, mySite, openId,
                locale, firstName, middleName, lastName, prefixId, suffixId, male,
                birthdayMonth, birthdayDay, birthdayYear, jobTitle, groupIds,
                organizationIds, roleIds, userGroupIds, sendEmail, serviceContext);


        } catch(Exception e){
            System.out.println(e.getMessage());
        }  

Setelah itu, untuk nilai expando

if(newUser.getExpandoBridge().hasAttribute("manager"))
                {

                        newUser.getExpandoBridge().setAttribute("manager", manager);
                        System.out.println("Custom field is avaliable now !!! Update User entry ");
                }
                else
                {
                        newUser.getExpandoBridge().addAttribute("manager");
                        newUser.getExpandoBridge().setAttribute("manager", manager);
                        System.out.println("Custom field is not avaliable !!! Update User entry ");
                }
person aston    schedule 06.04.2015

Metode UserLocalServiceUtil.addUser mengembalikan pengguna yang dibuat - mis. contoh kelas Pengguna. Anda dapat menggunakan instance untuk menambahkan atribut expando (dan, jika Anda membutuhkannya, idnya telah diinisialisasi).

Solusi lain adalah dengan membuat pembungkus layanan untuk UserLocalService. Pembungkus layanan memperluas penerapan layanan asli dan membuat penyesuaian lebih lanjut. Dalam kasus Anda, Anda dapat mengganti metode addUser, biarkan implementasi asli menambahkan pengguna (super.addUser(...)) dan kemudian menambahkan atribut expando.

Untuk detail selengkapnya, lihat Mengganti Layanan Portal di Panduan Pengembang Liferay 6.2.

person Tomas Pinos    schedule 05.04.2015