Რეკლამები
წინასწარ განსაზღვრული ცხრილის მაგალითი.
ამ ლაბორატორიაში ჩვენ ვნახავთ მარტივ მაგალითს, რომელიც აჩვენებს, თუ როგორ გამოვიყენოთ DataTable კომპონენტი, ეს ელემენტი საშუალებას გვაძლევს დავაკავშიროთ მონაცემთა ცხრილი ჩვენს გვერდზე ასე:
![](https://1.bp.blogspot.com/-6jFC3MsdYpY/XVBXBs2vYsI/AAAAAAAAFSs/PBitmP-b7dIY2X1FyIdG5qE_CCk2U6c2QCLcBGAs/s320/1.jpg)
ამ პირველი მაგალითისთვის, მხოლოდ ადრე დასახლებული კომპონენტი იქნება დაკავშირებული ჩვენი bean კლასიდან, მოგვიანებით ნაჩვენები იქნება მისი ინფორმაციის დინამიურად მანიპულირება.
თავდაპირველად, მოდით შევქმნათ JSF პროექტი შემდეგი სტრუქტურით:
![](https://1.bp.blogspot.com/-Yvdtvhb1Jhs/XVBXD-UMiZI/AAAAAAAAFTY/yKH94-k8Lh83RL6yoUWW7wkLykghWcDsACLcBGAs/s320/2.jpg)
როგორც ვხედავთ, იქმნება 2 java კლასი, ერთი შეესაბამება პიროვნების კლასს, რომელიც საშუალებას გვაძლევს დავამუშაოთ ადამიანები, რომლებსაც ვაჩვენებთ ჩვენს ცხრილში, მეორე კი bean-ს, რომელიც საშუალებას მოგვცემს ვმართოთ ჩვენი ცხრილი შესაბამისით. სვეტები და ჩანაწერები.
Person.java კლასი გვაწვდის პიროვნების ძირითად მონაცემებს, რომელთა ჩვენებასაც ვაპირებთ ცხრილში, აქ ვამატებთ შესაბამის კომპლექტს და ვიღებთ მეთოდებს, ასევე კონსტრუქტორს პარამეტრებით, რომ პირდაპირ შევავსოთ ხალხი.
TablaBean.java კლასი ეხება ცხრილს და მასში მყოფი ადამიანების მართვას, ჩანაწერები, რომლებიც ნაჩვენებია, ინახება ArrayList პიროვნების ტიპში, რომელიც ამ სახელმძღვანელოს მიზნებისთვის ივსება კონსტრუქტორში.
index.xhtml-ში ჩვენ ვქმნით DataTable კომპონენტს, რომელსაც ვაკავშირებთ ადამიანების სიას პირდაპირ მნიშვნელობაში და შესაბამის სვეტებში bean-ის ატრიბუტებში, რომლებიც მითითებულია var=”data”-ში, სადაც მონაცემები არის ელემენტი, რომელიც წარმოადგენს მონაცემს. პირის ობიექტი ცხრილის თითოეულ სტრიქონში.
მისი გაშვებისას გვექნება მსგავსი რამ
![](https://1.bp.blogspot.com/-_EmidoL5mkY/XVBXHXxnExI/AAAAAAAAFUI/zN2ff4dRY9oJiudtlcb4IIIgBsj-Czz4QCLcBGAs/s400/6.jpg)
როგორც ვხედავთ, ინფორმაცია წარმოდგენილია ცხრილის რეჟიმში, რადგან ჩვენ ჯერ არ დაგვიკავშირებია CSS სტილები, ჩვენ ვაფასებთ მხოლოდ სტრიქონებში და სვეტებში სტრუქტურას რაიმე ტიპის დიზაინის გარეშე, თუმცა შეგვიძლია დავამატოთ "საზღვრის" თვისება ცხრილში და ზღვარი, რომელსაც აქვს მსგავსი რამ:
ჩვენ საბოლოოდ ვიცით, რომ შეგვიძლია გამოვიყენოთ
მონაცემთა მართვის მაგალითი DataTable-ში.
ამ განყოფილებაში ჩვენ გავაგრძელებთ წინა მაგალითს, სადაც ვნახავთ, თუ როგორ უნდა მანიპულირება ცხრილის მონაცემებით, რათა განვახორციელოთ საერთო პროცესები, როგორიცაა ინფორმაციის რეგისტრაცია, შეცვლა ან წაშლა.
Ხალხის დამატება.
ადამიანების დასარეგისტრირებლად ჩვენ შევცვლით ჩვენს index.xhtml გვერდს, რომელსაც მივაკავშირებთ პირის რეგისტრაციის ფორმას. ჩვენ ამას ვაკეთებთ ქსელის პანელში შეყვანისა და შერჩევის კომპონენტების დაკავშირებით, რომელიც სათანადოდ ასოცირდება „myPerson“ ობიექტთან, რომელზედაც იგზავნება სხვადასხვა მონაცემები. დაარეგისტრირეთ ატრიბუტები, შემდეგ ასოცირდება ღილაკი, რომელიც გამოიძახებს „addPerson()“ მეთოდს, რომელიც საშუალებას მისცემს ჩვენს სისტემაში დარეგისტრირებულია ახალი ადამიანი.
![](https://1.bp.blogspot.com/-avA4bmAQ3uI/XVBXJPtxunI/AAAAAAAAFUU/7fGG7EKRqpcIZtkNTOWdhoTCpdu6TbeqACLcBGAs/s640/9.jpg)
როგორც ვხედავთ, ეს ახალი ელემენტები ემატება სანამ DataTable მიიღებს ასეთ შედეგს:
![](https://1.bp.blogspot.com/-CBjkXUPesT8/XVBXCCL3QCI/AAAAAAAAFSw/AA6k6rBeuQUX8-Ro4jeqrZHYQgZF4zOqgCLcBGAs/s400/10.jpg)
ინდექსის მოდიფიცირების შემდეგ ჩვენ განვახორციელებთ აუცილებელ ცვლილებებს TableBean.java კლასში, რადგან ამ მაგალითში ჩვენ გავაგრძელებთ ნაგულისხმევი მასშტაბის დონის გამოყენებას, ასე რომ, ჩვენ ვაქცევთ ადამიანთა სიას სტატიკური ისე, რომ მისი მანიპულირება უპრობლემოდ მოხდეს. გარდა ამისა, ჩვენ აღმოვფხვრით სიის შევსებას, რადგან იდეა არის, რომ შეძლონ ადამიანების რეგისტრაცია სარეგისტრაციო ფორმის საშუალებით.
![](https://1.bp.blogspot.com/-LDeYdKsQpwg/XVBXCVoJjII/AAAAAAAAFS4/qNytc116e0gNnOSbsiPLvx1bFwFNJ1I2gCLcBGAs/s640/11.jpg)
როგორც ვხედავთ, სიის, როგორც სტატიკური განსაზღვრისას, ჩვენ ვქმნით მის მაგალითს კლასის დონეზე, ჩვენ ამას არ ვაკეთებთ კონსტრუქტორში, რადგან ამას სხვადასხვა შემთხვევაში გამოიძახებს ჩვენი jsf, რაც გამოიწვევს სიის ახალ ინსტანციას, რომელიც გამოიწვევს გვაიძულებს დავკარგოთ ინფორმაცია, რომელიც შეიძლება შეიცავდეს.
გარდა ამისა, ჩვენ დავამატეთ Person ტიპის ობიექტი, რომ შეგვეძლოს სარეგისტრაციო მონაცემების მართვა და დავამატეთ “aggregarPersona()” მეთოდი, რომელიც საშუალებას გაძლევთ დაამატოთ ახალი ელემენტი სიაში და გამოიძახეთ jsf ღილაკიდან, მოგვიანებით ჩვენ გენერირებას ვაკეთებთ ახალ მაგალითს. „მინჰაპესოა“ ობიექტი, რომელიც სარეგისტრაციო ფორმის გაწმენდის საშუალებას მისცემს.
სისტემის გაშვებისას ჩვენ ვნახავთ შემდეგ ქცევას:
![](https://1.bp.blogspot.com/-OueB5eSBbdM/XVBXCQ98BCI/AAAAAAAAFS0/nkzOyp5xwXwQhXuJa4A0lwBYm-T42c0UACLcBGAs/s400/12.jpg)
თავდაპირველად ფორმა ცარიელია და ასევე ნაჩვენებია ჩვენი ცხრილის სათაური, მაგრამ ყოველგვარი შინაარსის გარეშე (გახსოვდეთ, რომ ჩვენ ამოვიღეთ სიის შევსება), ასე რომ, ის არ აჩვენებს სათაურს, როდესაც ჯერ არ არის რეგისტრირებული ხალხი, ამიტომ ვიყენებთ „გაწეული“ თვისება, სადაც ვამოწმებთ, რომ სიის სიგრძე ნულზე მეტია, წინააღმდეგ შემთხვევაში, სათაურები არ უნდა იყოს ნაჩვენები. (ამ ქონების ექსპლუატაცია მოგვიანებით იქნება განხილული)
![](https://1.bp.blogspot.com/-09WN_MWGfoY/XVBXCuh-2DI/AAAAAAAAFS8/9cH6lYpTx0YHLZdeAAFpxzMqk6vtma7nACLcBGAs/s640/13.jpg)
როგორც ვამატებთ ადამიანებს, ისინი ინახება სიაში და წარმოდგენილია DataTable-ში
![](https://1.bp.blogspot.com/-bab5JGC0-9A/XVBXCx7ctyI/AAAAAAAAFTA/iCqJou4_86oFMPJMIr_a-Dk3DjiCAXAkwCLcBGAs/s400/14.jpg)
წაშალე ხალხი.
მას შემდეგ, რაც ჩვენ წარმატებით დავარეგისტრირებთ ადამიანებს ჩვენს სიაში, ჩვენ შეგვიძლია მათი ამოღება. ამისათვის ჩვენ დავამატებთ მოქმედებების ახალ სვეტს ჩვენს dataTable-ში, რომელიც შეიცავს ბმულს „eliminatePerson()“ მეთოდზე, რომელსაც ჩვენ შევქმნით ჩვენს bean-ში.
ამისათვის ჩვენ ვცვლით index.xhtml, სადაც სვეტის "სექსის" შემდეგ დავამატებთ სვეტს "მოქმედებები"
![](https://1.bp.blogspot.com/-Oh0PfQAeKFA/XVBXC4SWR2I/AAAAAAAAFTE/fpgeptCqi6kPXR9xLeBMafR0kWm6Mio6gCLcBGAs/s640/15.jpg)
როგორც ვხედავთ, ჩვენ ვიყენებთ კომპონენტს
მოგვიანებით, TablaBean.java კლასში დავამატეთ „eliminarPersona()“ მეთოდი, რომელიც პარამეტრად იღებს პიროვნების ობიექტს, რომლის წაშლაც გვინდა, ეს შეესაბამება „მონაცემებს“, რომელსაც ვუგზავნით jsf-დან და ექვივალენტურია იმ პირის ხაზი, რომლის წაშლა გვინდა, შემდეგ ამოიღოთ იგი სიიდან.
![](https://1.bp.blogspot.com/--CLv6XWQ1l0/XVBXDES6svI/AAAAAAAAFTI/uVPK39aYHVoWANvCcOc5XcyNDq297ASSACLcBGAs/s640/16.jpg)
სისტემის გაშვებისას გვექნება შემდეგი:
![](https://1.bp.blogspot.com/-G_JeZPUd06A/XVBXDaDg81I/AAAAAAAAFTM/9BaMiyQpOR4jcEGIpR1KTuRME4Q8ng-ngCLcBGAs/s400/17.jpg)
და ყოველ ჯერზე, როდესაც ჩვენ წაშლით ჩანაწერს შესაბამისი ბმულის საშუალებით, ცხრილი განახლდება
![](https://1.bp.blogspot.com/-oxxuzTsxt7o/XVBXDVOfPhI/AAAAAAAAFTQ/e2NMUczZt0Qc_z1fq9-ezJjYoQw4d83MgCLcBGAs/s400/18.jpg)
ხალხის რედაქტირება.
ჩვენი სიიდან ადამიანების წარმატებით დარეგისტრირებისა და წაშლის შემდეგ, ჩვენ შეგვიძლია შევცვალოთ ისინი, ამისთვის ჩვენ შევცვლით ჩვენს ცხრილს, რაც მას რედაქტირებადს გახდის, როცა გვინდა ზოგიერთი მონაცემის განახლება, ამისთვის კვლავ გამოვიყენებთ „გადაყვანილ“ თვისებას, რომელიც გამოჩნდება ან დამალეთ რედაქტირებადი პარამეტრები იმის მიხედვით, თუ რას გადაწყვეტს მომხმარებელი.
![](https://1.bp.blogspot.com/-WAoS8VoFhVU/XVBXDxYZM0I/AAAAAAAAFTU/FVNsdfrDYOMBEE4DThMA1Z7sEkRySIpMACLcBGAs/s640/19.jpg)
როგორც ვხედავთ თითოეულ სვეტში, ემატება კომპონენტი
ჩვენს შემთხვევაში, "data.edit" აკეთებს ზარს ლოგიკურ ცვლადზე (რედაქტირება), რომელიც ჩვენ დავამატეთ Person კლასში, თუ თვისება არის true, მაშინ ის აჩვენებს
იგივე უნდა გაკეთდეს პროფესიის, ხელფასის და სქესის სვეტების შესაბამისად, სადაც ა
![](https://1.bp.blogspot.com/-XyYchscZYHw/XVBXD1vP5BI/AAAAAAAAFTc/M0fyr3UMHaYltRm2IUe6OGq7Wgp35EM3QCLcBGAs/s640/20.jpg)
ანალოგიურად, გაწეული თვისება ვალდებულია აჩვენოს კომბინაცია ან აჩვენოს ლეიბლი, როგორც ეს შეიძლება იყოს.
შემდგომში შეიცვალა სვეტი „მოქმედებები“, სადაც ადრე მხოლოდ „წაშლა“ გვქონდა ბმული, ახლა დავამატებთ კიდევ 2 ბმულს, ერთს „რედაქტირებისთვის“ და მეორეს ინფორმაციის „შენახვისთვის“ რედაქტირების შემდეგ.
![](https://1.bp.blogspot.com/-scSVIGsOJBg/XVBXEbBLm-I/AAAAAAAAFTg/CXOJ5GiAHFcGoU6DZdlpagMSIyrlApdEgCLcBGAs/s640/21.jpg)
როგორც ვხედავთ, ახლა არის 3 ბმული რედაქტირების, შენახვისა და წაშლის მეთოდებისთვის, თუმცა რედაქტირებასა და შენახვას აქვს გამოსახული თვისება, რაც 3 ბმულიდან მხოლოდ 2-ს ხდის ერთდროულად ხილულს (გახსოვდეთ, რომ რენდერი შეიცავს true ან false-ს, დამოკიდებულია პირობით ) ასე რომ, ნაგულისხმევად, წაშლის ბმული ყოველთვის გამოჩნდება, რადგან მას არ აქვს გაცემული თვისება, ხოლო რედაქტირება და შენახვა არასოდეს გამოჩნდება ერთად. ( საშუალებას გაძლევთ დაამატოთ სივრცე ბმულებს შორის)
შინაგანად, გრაფიკულ დონეზე, მონაცემთა ცხრილი ასე გამოიყურება:
![](https://1.bp.blogspot.com/-Toucn1Pe4gw/XVBXEoQo0aI/AAAAAAAAFTk/3iWQ-CwM0Y4lfo1le-Q7K3zS7edPdUe7gCLcBGAs/s640/22.jpg)
მიუხედავად იმისა, რომ გრაფიკულად შეგიძლიათ იხილოთ ყველა კომპონენტი ერთად, მნიშვნელოვანია, რომ ძალიან მკაფიო იყოს, რომ გაცემული თვისება აჩვენებს მხოლოდ კომპონენტებს, რაც დამოკიდებულია იმ მომენტში ჭეშმარიტ ან ცრუ მნიშვნელობაზე.
index.xhtml-ის მოდიფიკაციის შემდეგ, ახლა დროა შეცვალოთ Person.java კლასი, რომელსაც ემატება ზემოთ ნახსენები რენდერის მიერ გამოყენებული თვისება “edit”.
![](https://1.bp.blogspot.com/-hO96FPe2zDo/XVBXFmc4GZI/AAAAAAAAFTo/guH3ganP_qo34wvqMsfhbdlQM8wzjEbkACLcBGAs/s640/23.jpg)
როგორც ვხედავთ, ახალი ლოგიკური ატრიბუტი უკავშირდება მის შესაბამის კომპლექტს და მიღებას. დამატებით, სავარჯიშოს სტრუქტურის დასარეგულირებლად, თვისება დავამატეთ პარამეტრიზებულ კონსტრუქტორს, თუმცა სავარჯიშოს ამ ეტაპზე ის აღარ გამოიყენება.
ამგვარად, ყოველ ჯერზე, როდესაც rendered=”#{data.edit}” კეთდება index.xhtml-ში, ის გამოიძახებს ამ ცვლადს, რაც შესაძლებელს გახდის კომპონენტების ჩვენებას ან დამალვას შემთხვევის მიხედვით.
ბოლოს და წინა ცვლილებებით დავიწყეთ Bean კლასის მოდიფიკაცია, სადაც წაშლისა და შენახვისას უნდა დავამატოთ შესაბამისი მეთოდები, რომლებიც გამოძახებულია "მოქმედებები" ველიდან.
![](https://1.bp.blogspot.com/-vmOz0l7u5EU/XVBXF4hOJHI/AAAAAAAAFTw/PNjo0wpf0p4VZbjmZB26TLscRmqELxq4QCLcBGAs/s400/24.jpg)
როგორც ვხედავთ, editPersona() მეთოდი იღებს პირის ობიექტს (jsf გამოძახებიდან, როგორც ეს ხდება წაშლის მეთოდში) და მისი “edit” თვისება იცვლება, მნიშვნელობის true გაგზავნით, რაც ამ ჩანაწერის დამალვის საშუალებას მისცემს. The
მეორეს მხრივ, savePersona() მეთოდი პასუხისმგებელია სიაში ყველა ობიექტის ყოველი „რედაქტირების“ თვისების შეცვლაზე false-ზე ისე, რომ dataTable აღდგეს ხალხის მნიშვნელობებით და არა რედაქტირებადი ელემენტებით.
სისტემის გაშვებისას გვექნება შემდეგი:
![](https://1.bp.blogspot.com/-2FM2xKBvlzE/XVBXFz7cxnI/AAAAAAAAFTs/lyyaf8W2vKAH-2daDSWKsD_7HF9x3x_ZACLcBGAs/s640/25.jpg)
და როდესაც დააჭირეთ რედაქტირებას, სისტემა იცვლება შემდეგში:
![](https://1.bp.blogspot.com/-7HZtaeYo4bo/XVBXGIHW8XI/AAAAAAAAFT0/ayZCf3clY3YAQlASsDnkWy24JuNilaPDwCLcBGAs/s640/26.jpg)
როგორც ხედავთ, რედაქტირების ბმულზე დაწკაპუნებისას, რედაქტირებადი კომპონენტები ავტომატურად გამოჩნდება, ხოლო არარედაქტირებადი კომპონენტები იმალება, ანალოგიურად, რედაქტირების ბმული ქრება, რათა გზა გაუხსნას შენახვის ბმულს, როგორც ზემოთ იყო განმარტებული.
და მზადაა!!!
ჩემს ბლოგზე და ჩემს არხზე მე ვაზიარებ მასალას ამ შესანიშნავი პროგრამირების ენის შესახებ, შეგიძლიათ იპოვოთ ბევრი სტატია და ვიდეოები ნულიდანმე გაჩვენებთ, თუ როგორ უნდა ჩამოტვირთოთ საჭირო ინსტრუმენტები პროგრამირების დასაწყებად, ჩვენ უფრო და უფრო მაღლა ვდგავართ ძირითადი კონცეფციების მეშვეობით, გავდივართ ობიექტზე ორიენტირებული პროგრამირების კონცეფციებისტანდარტები, თემებიმონაცემთა სტრუქტურები, სხვათა შორის მონაცემთა ბაზებზე წვდომა, მშენებლობაზე აპლიკაციები მომხმარებლის ინტერფეისით.
ასევე შეგიძლიათ იპოვოთ ა კურსი ნულიდან, სადაც ვასწავლი თუ როგორ შევქმნა მობილური აპლიკაციები ანდროიდზე ნაბიჯ-ნაბიჯ ვიდეო თანმიმდევრობის მეშვეობით, რომელიც მუდმივად განახლდება.
ახლა კი დავიწყებ თანმიმდევრობას ნულიდან, სადაც შევალთ java Enterprise edition-ის სამყაროში, გაჩვენებთ როგორ დააყენოთ განვითარების გარემო და როგორ შექმნათ თქვენი პირველი ვებ აპლიკაციები java-ით.
ამიტომ გეპატიჟებით ეწვიოთ codejavu.blogspot.com, ეწვიოთ ჩემი არხი კრისტიან ჰენაო და რომ მათ კარგად იციან ახალი გაგრძელების შესახებ
შეიძლება ასევე დაგაინტერესოთ.
არის რაიმე რისი დამატება ან კომენტარის გაკეთება ამ ჩანაწერის შესახებ? თავისუფლად გააკეთე….და თუ მოგეწონათ გეპატიჟებით გააზიაროთ ი გამოიწერეთ ღილაკზე „შეუერთდით ამ საიტზე“ დაწკაპუნებით, რომ მოისმინოთ მეტი მსგავსი პოსტი 😉