Merhabalar,

Spring MVC - Hibernate kullanarak bir proje geliştirmekteyim. Model olarak hazırladığım User.java sınıfım aşağıdaki gibi:

import javax.persistence.*;

@Entity
@Table(name = "user")
public class User {
    @Id
    @GeneratedValue
    @Column(name = "id")
    private Integer id;

    @Column(name = "username")
    private String username;

    @Column(name = "password")
    private String password;

    @Column(name = "firstname")
    private String firstname;

    @Column(name = "lastname")
    private String lastname;

    @Column(name = "email")
    private String email;

    @Column(name = "enable")
    private boolean enable;

    // getter/setter
    }
}

Yeni bir User ekleyeceğim zaman, önce view tarafına commandName' i "user" olan boş bir User.java nesnesi gönderiyorum. Form submit edildikten sonra @ModelAttribute ile "user" objesini alıyorum ve veritabanına userService.save(user); ile kaydediyorum. Burada 2 sorum olacak:

  • Birinci sorum; View' e, kullanıcı bilgilerini doldursun diye, User.java model objesi mi göndermeliyim, yoksa UserForm.java gibi bir sınıf daha oluşturup, bilgileri UserForm.java dan alıp User.java modeline set edip mi kaydetmeliyim?
  • İkinci sorum; yukarıdaki işlemi gerçekleştirirken vereceğiniz cevaplar doğrultusunda nasıl bir validation yolu izlemeliyim?

İyi çalışmalar...

soruldu: 23 Eki '13, 10:32

gceylan's gravatar image

gceylan
2166815
cevap kabul oranı: 0%


1nci cevap: Ben bir dto oluşturup, dao katmanında modele set ediyorum. (yani UserForm.java)

2nci cevap: Eğer JSF kullanıyorsan zaten komponentlerin validatörü var. JSP kullanıyorsan, Validator class'ını implemente ederek validasyonu yapabilirsin.

Employee Controller:

@RequestMapping(value="/add.html",method = RequestMethod.POST)
public String submit(@ModelAttribute("employee") Employee employee, BindingResult bindingResult) 
    {
        Validator validator =  new EmployeeAddValidator();

        validator.validate(employee, bindingResult);

        if (bindingResult.hasErrors()) 
        {
            return "/personnel/add/add";
        } 
        else 
        {
            manager.addEmployee(employee);
            return "redirect:ok.html";
        }
    }

Employee Validator:

   import org.springframework.validation.Errors;
    import org.springframework.validation.ValidationUtils;
    import org.springframework.validation.Validator;

    import com.gulsan.erp.module.personnel.domain.Employee;

    public class EmployeeAddValidator implements Validator 
    {

        public boolean supports(Class clazz) 
        {
            return false;
        }

        public void validate(Object object, Errors errors) 
        {
            ValidationUtils.rejectIfEmpty(errors, "name", "personnel.employee.add.name.empty");
            ValidationUtils.rejectIfEmpty(errors, "firstname", "personnel.employee.add.firstname.empty");
            ValidationUtils.rejectIfEmpty(errors, "email", "personnel.employee.add.email.empty");

            Employee p = (Employee) object;

            if (p.getEmail().indexOf("@") == -1)
            {
                errors.rejectValue("email", "personnel.employee.add.email.invalid");
            }
        }
    }

Birde resources/bundles/messages.properties oluşturunca güzel oluyor.

personnel.employee.add.name.empty               = Lütfen personelin soyismini giriniz!
personnel.employee.add.firstname.empty          = Lütfen personelin ismini giriniz!
personnel.employee.add.email.empty              = Lütfen personelin E-Posta adresini giriniz!
permanent link

cevaplandı: 25 Eki '13, 08:31

SaRPaRDa's gravatar image

SaRPaRDa
5.0k213165
cevap kabul oranı: 27%

Benim de kafama yatan bir UserForm.java oluşturmaktı. Spring de yeni sayılırım. Bilgilendirmeniz için teşekkür ederim. Şimdi daha eminim.

Validation için de JSR303 mantığını kullanmaya karar verdim.

Kolay gelsin, iyi çalışmalar...

(25 Eki '13, 12:04) gceylan gceylan'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:

×42
×5

Soruldu: 23 Eki '13, 10:32

Görüntüleme: 950 kez

Son güncelleme: 25 Eki '13, 13:04

powered by BitNami OSQA