Wywoływanie konstruktorów.

0

Witam,

Dzisiaj napotkałem się na dziwny błąd. Prawdopodobnie ja coś nie widzę, albo problem leży po stronie mojej niewiedzy.

Mianowicie mam taką klasę:

public class FormUtil<T> {
    private final T form;
    private Errors binding;

    public FormUtil(final T form) {
        this.form = form;
    }

    public FormUtil(final T form, final Errors binding) {
        this(form);
        this.binding = binding; //W tym miejscu zmienna binding nie przypisuje się.
    }
}

new FormUtil<>(form, result);

Próbowałem zdebugować ten problem i widzę taki o to komunikat: "binding = Cannot find local variable 'binding'". Korzystam z IntelliJ.

Czy wy widzicie co robię źle ?

Pozdrawiam, i dzięki za podpowiedzi.

0

Poniższy kod działa. Musiałeś coś sknocić w tej części kodu, której nie zamieściłeś.

public class FormUtil<T> 
{
    private final T form;
    private Errors binding;
 
    public FormUtil(final T form) {
        this.form = form;
    }
 
    public FormUtil(final T form, final Errors binding) {
        this(form);
        this.binding = binding;
    }
    public static void main(String[] args)
    {
        FormUtil<String> fu = new FormUtil("d*pa",new Errors());
        System.out.println(fu.binding);
    }
}
0

@bogdans

Też działa mi jak testuję to w main. Ale potrzebuję to w kontrolerze a tak wywołuję:

@RequestMapping(value = "/form", method = RequestMethod.POST)
    public String perform(@ModelAttribute @Valid EmployeeAccountForm form, BindingResult result, Model model, RedirectAttributes flash) {
        model.addAttribute("form", new FormUtil<>(form, result));
   }
0

BindingResult jest subklasą Errors?
Edit: Ok, jest

Stwórz FormUtil tak: new FormUtil<EmployeeAccountForm>(form, result).

0

Nie jest to kwestia generyka, bo jak nie poda nazwy klasy w nawiasach to będzie to Objectem(jak zacznie działać to się dowie :)).
Tutaj jest podobny przykład i rozwiązanie... w sierpniu(ale przynajmniej tego roku:))
https://youtrack.jetbrains.com/issue/IDEA-126257

1 użytkowników online, w tym zalogowanych: 0, gości: 1