İyi günler...

Jsf yeni geçtim ve internette bulduğum videolarla öğrenmeye çalışıyorum fakat takıldığım bir yer var... ArrayList ile datatableme değerler atıp bu değerleri buton ile methoda yollayarak güncellemeye çalışıyorum fakat güncellediğim method yolladığım objenin eski değerlerini görüyor yeni değerlerini değil. Örneğin ;

JavaBeanSınıfım :

package com.filter;

import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

import com.dao.StudentDao;
import com.entity.Student;

@ManagedBean
@RequestScoped

public class StudentAffairs {

    Student student;
    String message ;
    List<Student> students;

    public StudentAffairs(){

        student = new Student();

    }

    @PostConstruct
    public void pullStudents(){
         students = new StudentDao().getAllStudents();

    }

    public void deleteStudent(Student student){
        System.out.println("the delete method is working at moment");
        this.message =  new StudentDao().deleteStudent(student);
    }

    public void setUpdateStudent(Student student){

        System.out.println("Working");
        System.out.println(student.getName());
        new StudentDao().updateStudent(student);

    }

    public void addStudent(){
        System.out.println("the add method is working at moment");
        this.message = new StudentDao().addStudent(this.student);
    }

    public Student getStudent() {
        return student;
    }

    public void setStudent(Student student) {
        this.student = student;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public void studentVisible(Student student){
        System.out.println("the visible method is working at moment");
        student.setUpdateVisible(true);
    }

    public List<Student> getStudents() {
        return students;
    }

    public void setStudents(List<Student> students) {
        this.students = students;
    }

}

Jsf Sayfam ;

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html">

<h:head> <h:outputtext value="Öğrenci İşleri"/> <h:outputstylesheet library="css" name="/css/common-style.css"/> </h:head> <h:body>

<div id="page">
<div id="form">
    <h:form>
        <h:panelGrid columns="2">
            <h:outputText value="Ad : " />
            <h:inputText value="#{studentAffairs.student.name}" />

            <h:outputText value="Okul numarası : " />
            <h:inputText value="#{studentAffairs.student.school_ID}" />

            <h:outputText value="Puan : " />
            <h:inputText value="#{studentAffairs.student.grade}" />

            <h:commandButton action="#{studentAffairs.addStudent()}" value="Kaydet" />
        </h:panelGrid>
        <h:outputText value="#{studentAffairs.message}" />
    </h:form>
</div>

<div id="table">
    <h:form>
        <h:dataTable value="#{studentAffairs.students}" var="student">
            <h:column>
                <f:facet name="header"> Ad </f:facet>
                <h:outputText value="#{student.name}" rendered="#{!student.updateVisible}" />
                <h:inputText value="#{student.name}" rendered="#{student.updateVisible}" />
            </h:column>

            <h:column>
                <f:facet name="header"> Okul Numarası </f:facet>
                <h:outputText value="#{student.school_ID}" rendered="#{!student.updateVisible}" />
                <h:inputText value="#{student.school_ID}" rendered="#{student.updateVisible}" />
            </h:column>

            <h:column>
                <f:facet name="header"> Not </f:facet>
                <h:outputText value="#{student.grade}" rendered="#{!student.updateVisible}" />
                <h:inputText value="#{student.grade}" rendered="#{student.updateVisible}" />
            </h:column>

            <h:column>
                <f:facet name="header"> Güncelle </f:facet>
                <h:commandButton action="#{studentAffairs.studentVisible(student)}" value="Güncelle" rendered="#{!student.updateVisible}"/>
            </h:column>

            <h:column>
                <f:facet name="header"> Sil </f:facet>
                <h:commandButton action="#{studentAffairs.deleteStudent(student)}" value="Sil" rendered="#{!student.updateVisible}"/>
            </h:column>
            <h:column>
                <f:facet name="header">Güncelle2</f:facet>
                <h:commandButton action="#{studentAffairs.setUpdateStudent(student)}" value="Update" />
            </h:column>
        </h:dataTable>
    </h:form>
</div>
</div>

</h:body> </html>

ve Student Class ;

package com.entity;

public class Student {

int id;
int grade;
int school_ID;
String name;

boolean updateVisible = false;

public Student(){
    System.out.println("worked cunstructer");
}

public Student(int id, int grade, int school_ID, String name) {

    System.out.println("work cunstructer");
    this.id = id;
    this.grade = grade;
    this.school_ID = school_ID;
    this.name = name;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public int getGrade() {
    return grade;
}

public void setGrade(int grade) {
    this.grade = grade;
}

public int getSchool_ID() {
    return school_ID;
}

public void setSchool_ID(int school_ID) {
    this.school_ID = school_ID;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public boolean isUpdateVisible() {
    return updateVisible;
}

public void setUpdateVisible(boolean updateVisible) {
    this.updateVisible = updateVisible;
}

}

alt text

dediğim gibi serverde inputtextime yeni değeri yazım yollayınca tekrar eski değeri methoda gönderiyor.

setUpdateStudent methodumda gönderdiğim 'canan' isimli objemin ismini değiştirerek 'canan can' yaptım ama test etmek amaclı cıktısını aldım ve çıktı ;

alt text

hala eski 'canan' isimli objeyi görüyor

Lütfen yardım edin...!

soruldu: 25 Mar, 18:24

Qmer05's gravatar image

Qmer05
13041332
cevap kabul oranı: 0%


Kodu şu şekilde değiştirerek dener misin...

<h:commandButton action="#{studentAffairs.studentVisible(student)}" value="Güncelle" rendered="#{!student.updateVisible}" update="@form"/>
permanent link

cevaplandı: 26 Mar, 16:20

SaRPaRDa's gravatar image

SaRPaRDa
5.0k213165
cevap kabul oranı: 27%

Hocam sorunu çözdüm dalgınlıkla ilgili kaynaklanan bi hata var :) çok çalışmanın zararları

(27 Mar, 05:26) Qmer05 Qmer05's gravatar image
1

Ek olarak StudentDAO class'ini StudentAffairs class'i icinde her lazim oldugunda new StudentDAO() olarak kullanmak yerine yukarida @Inject StudentDAO studentDAO; olarak inject yaparak kullanmalisin!

(28 Mar, 04:30) CemIkta ♦ CemIkta's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×281
×14

Soruldu: 25 Mar, 18:24

Görüntüleme: 213 kez

Son güncelleme: 28 Mar, 04:30

powered by BitNami OSQA