Forum İçeriği > Java Server Faces > jsf- h:selectBooleanCheckbox
|
|
Serhat Meşe 27 ay önce
Aktivite Puanı: 62
Merhaba, getSelectedStudentList yonteminizde secili olan ogrencileri
donebilirsiniz. Yani yonteminiz soyle olabilir. public List
getSelectedStudents(){} Daha sonra edit yonteminizde bu yontemi
cagirarak secili olan Student'i bulabilirsiniz. Bu secili olan Student
instanceini beaninizde tanimlayacaginiz selectedStudent'a atayabilirsiniz.
private Student selectedStudent; //getter-setter public String
editStudent(){ selectedStudent = getSelectedStudentList().get(0); return
"edit"; } Obur sayfaya nasil aktaracagim sorusuna gelince, obur sayfaya
gectiginizde halen requestte olacaginiz icin direk beaninizin selectedStudent
elemanina ulasabilirsiniz. Asagidaki gibi bu elemanlara ulasabilirsiniz.
"#{requestBean.selectedStudent.name}"
"#{requestBean.selectedStudent.surName}" Umarim sorunuza yardimci olur.
Kolay gelsin.
|
|
|
ertugrula 27 ay önce
Aktivite Puanı: 156
Hocam ilginize cok tesekkur ederim Ancak bi sorunum oluyor, public List
getSelectedStudents(){} bu metodu cagrildigi zaman .jsp icinde baska sayfaya
yonlendirme yapamiyorum, dediginiz gibi yaptim ama, bu butona tilayinca hic bir
yere gitmeyecek onu nasil ayarlayabilirz. Kullandigim kodlarin bir kismini
yolluyorum, incleme firsatiniz olur yardimci olursaniz cok sevinirim. public
class SelectAndEdit { @EJB private StudentRemote remote; private List
studentList; private Student student = new Student(); private Map selectedIds =
new HashMap(); private List selectedStudentList; private HtmlDataTable
dataTable; private HtmlInputHidden studentId = new HtmlInputHidden(); private
Student selectedStudent; public List getStudentList() { studentList =
remote.getStudentList(); return studentList; } public List
getSelectedStudents() { selectedStudentList = new ArrayList(); for (Student
student : studentList) { if (selectedIds.get(student.getId()).booleanValue()) {
selectedStudentList.add(student); selectedIds.remove(student.getId()); } }
System.out.println(selectedStudentList); return selectedStudentList; } public
String editStudent() { selectedStudent = getSelectedStudentList().get(0);
remote.updateStudent(selectedStudent); return "list"; } // getter-seeter bu
kodlarda nasil bir duzenleme yapmam gerekiyor. public String
getSelectedStudents() { selectedStudentList = new ArrayList(); for (Student
student : studentList) { if (selectedIds.get(student.getId()).booleanValue()) {
selectedStudentList.add(student); selectedIds.remove(student.getId()); } }
return "selected"; } bu sekildeyken, butona basinca secilenler.jsp sayfasina
yonlendiriyordum, secilenleri listeliyordu, simdi herhangi bi sayfaya
yonlendiremeyecem, nasil yapabilrim. neleri degistirmem gerek.
|
|
|
Serhat Meşe 27 ay önce
Aktivite Puanı: 62
Merhaba; Senin yontemin aynen kalsin. Onu degistirme. Baska bir isimde bir
onceki yazimda bahsettigim isi(secili olan ogrencilerin listesini donen bir
yontem) yapan bir yontemin daha olsun. Yontemin ici de senin
getSelectedStudents yonteminin aynisi olacak ama donus degerin
selectedStudentList olacak. public List
getSelectedStudentList() gibi... Edit yapacagin zaman bu yeni yontemi
cagir..Sonra da bir onceki yazimda anlattiklarimi yapmaya calis. Bir de kopyala
yapistir yaptigin kodlari "code" tagleri icine alirsan kodlar daha anlasilir
olur(Metin kutusunun ustunde en sonda olan buton) kolay gelsin...
|
|
|
ertugrula 27 ay önce
Aktivite Puanı: 156
Tesekkur ederim hocam dediklerinizi yaptim, ancak bi sorun oldu, hatanin
sebebini anlamadim. asagidaki yaptim, diger sayfaya gidiyor ama degerleri
gostermiyor. asagidaki sekilde yaptim. secilen.jsp
requestBean.java public List getStudentList() { studentList =
remote.getStudentList(); return studentList; } public String
getSelectedStudents() { selectedStudentList = new ArrayList(); for (Student
student : studentList) { if (selectedIds.get(student.getId()).booleanValue()) {
selectedStudentList.add(student); selectedIds.remove(student.getId()); } }
return "selected"; } public String getEditForSelectedStudents() {
selectedStudentList = new ArrayList(); for (Student student : studentList) { if
(selectedIds.get(student.getId()).booleanValue()) {
selectedStudentList.add(student); selectedIds.remove(student.getId()); } }
return "edit"; } public List getSelectedStudentList() { return
selectedStudentList; } public String editStudent() { selectedStudent =
getSelectedStudentList().get(0); remote.updateStudent(selectedStudent); return
null; } public Student getSelectedStudent() { return selectedStudent; } public
void setSelectedStudent(Student selectedStudent) { this.selectedStudent =
selectedStudent; } son hali bu sekilde ama Target Unreachable,
'selectedStudent' returned null bu hatayi veriyor. gozumden kacan bi kisim
oluyor ama bi turlu bulamadim. Ve yaridmlariniz icin cok cok tesekkur ederimm..
|
|
|
ertugrula 27 ay önce
Aktivite Puanı: 156
yazdiklarimi dediginiz gibi kod bolumun icine aldim ama, yine bozuk cikti
heralde kusuruma bakmayin
|
|
|
Serhat Meşe 27 ay önce
Aktivite Puanı: 62
Merhaba; Gordugum kadariyla selectedStudent'i hic bir yerde setlemiyorsun.
getEditForSelectedStudents yonteminde bu atamayi yapabilirsin. Asagidaki gibi.
public String getEditForSelectedStudents() { selectedStudentList = new
ArrayList(); for (Student student : studentList) { if
(selectedIds.get(student.getId()).booleanValue()) {
selectedStudentList.add(student); selectedIds.remove(student.getId()); } }
selectedStudent = selectedStudentList.get(0); return "edit"; }
Kolay gelsin.
|
|
|
ertugrula 27 ay önce
Aktivite Puanı: 156
hocam cok cok tesekkur ederim yardimlariniz icin, hepsi istedigim gibi oldu,
cok tesekkur ederim tekrardan zahmet verdim.
|
|
|
Serhat Meşe 27 ay önce
Aktivite Puanı: 62
Rica ederim. Kolay gelsin...
|
|
|
onur 22 ay önce
Aktivite Puanı: 20
Merhabalar, datatable üzerinden commandlink ile seçilen satırı başka bir
sayfada açmaya çalışıyorum...(Table da ürünler var seçilen ürünün detayı yeni
açılan pencere gösteriliyor burada bazı işlemler yapılıyor) Böyle bir örneği
yapabilmem için EJB kullanmadan jsf kodları ve özellikle beanlerle yaardımcı
olabilirmisiniz..teşekkürler
|
|
|
ertugrula 22 ay önce
Aktivite Puanı: 156
Merhaba, yukaridaki konuda istediginiz cevab verilmis aslinda, ama yinede
takildiginiz yapamadiginiz kod kismini gonderseniz o sekilde yardimci olmaya
calisalim.. ve asagikdaki dokumanida incelemenizi tavsiye ederim... http://balusc.blogspot.com/2006/06/using-datatables.html#SelectMultipleRows
|
|
|
onur 22 ay önce
Aktivite Puanı: 20
Merhabalar, datatable da seçilen satırı görüntülemek için aşağıdaki kodu
kullanıyorum fakat binding yaptığımda datatable veritabanı tablosundaki son
eleman ile doluyor. binding kısmını sildiğim de de datatable yine normal
dolmuyor. Bunun ile ilgili yardımcı olursanız sevinirim teşekkürler. public
class UrunlerTamList { private List urunTamList; private HtmlDataTable
datatable; private int selectedId; Urunler urunler = new Urunler(); public
UrunlerTamList() { try { Connection conn = (Connection) DBConnect.connectDb();
Statement st = (Statement) conn.createStatement(); ResultSet rs =
st.executeQuery("SELECT * FROM urunler"); urunTamList = new ArrayList(); while
(rs.next()) { urunler.setId(rs.getInt("idurunler"));
urunler.setUrunMarka(rs.getString("marka")); urunTamList.add(urunler); } }
catch (SQLException ex) {
Logger.getLogger(UrunlerTamList.class.getName()).log(Level.SEVERE, null, ex); }
} public String action(){ urunler = (Urunler) datatable.getRowData();
setSelectedId(urunler.getId()); return "ok"; } -----------------------
|
|
|
onur 22 ay önce
Aktivite Puanı: 20
Merhabalar, datatable da binding yaptığımda tablo sadece vertabanındati son
kayıt ile doluyor. Bu konuda yardımcı olursanız sevinirim. Teşekkürler
|
|
|
Serhat Meşe 22 ay önce
Aktivite Puanı: 62
Merhaba, Kodların hepsini gonderirsen daha iyi olur diye dusunuyorum ben. Ama
simdilik sunu soyleyebilirim. urun listesini constructor icinde
dolduruyorsun.Bu işi constructorda yapacagina listenin getter yonteminde
yapabilirsin. public List getUrunTamList(){ if(urunTamList == null){
urunTamList = new ArrayList(); // bundan sonra da yukarida yaptigin veritabani
baglantisi yapip datayi cekip urunTamList'e doldurma kismi } return urunTamList
} Bu sekilde daha dogru olur diye dusunuyorum. Problemin yine de devam
ederse, kodlarin hepsini gonder oyle bakalim. Kolay gelsin...
|
|
|
Serhat Meşe 22 ay önce
Aktivite Puanı: 62
Merhaba, Kodlarina tekrar baktim da burada problem listeye eklerken olusuyor.
Listeye eklerken hep ayni urunler nesnesini ekliyorsunuz. Hicbir yerde new
diyerek yeni bir nesne olusturmuyorsunuz. Dolayisiyla listeye eklediginiz
urunler hep ayni oluyor ve dolayisiyla son eklediginiz urun oluyor. Bu yuzden
datatableda hep son kayıt gorunuyor. Bunu engellemek icin de araya Urunler
urunler = new Urunler(); satirini eklemen gerekiyor. Asagidaki gibi
yapabilirsin. while (rs.next()) { Urunler urunler = new Urunler();
urunler.setId(rs.getInt("idurunler"));
urunler.setUrunMarka(rs.getString("marka"));
urunler.setUrunModel(rs.getString("model")); urunTamList.add(urunler); }
Boylece her seferinde yeni bir urun olusturup onu listene eklemis olursun..
Ikinci problemin icin de action yontemini asagidaki gibi yaz. public
String action(){ urunler = (Urunler) datatable.getRowData(); return "ok";
} Burda sadece secilen urunu bul yeter (id'sini alip bir yerlere
setlemene gerek yok). detay sayfasinda da direk buldugun urunun elemanlarini
goster. Su sekilde direk gosterebilirsin. Umarim bu yazdiklarim yardimci
olur..Kolay gelsin..
|
|
|
onur 22 ay önce
Aktivite Puanı: 20
Hocam çok teşekkürler her iki problem de halloldu. Uzun zamandır bu iki problem
için çözüm arıyordum. vakit ayırdığınız için tekrar teşekkür ederim.
|
Aktivite Puanı: 156