Wywoływanie konstruktorów.

Wywoływanie konstruktorów.
FL
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 9 lat
  • Postów:36
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ę:

Kopiuj
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.

edytowany 1x, ostatnio: bogdans
LW
Na poczatek to przypisz wynik new gdzies, np <code=java>FormUtil<String> formUtil = new ... </code>
bogdans
!Wstawiaj kod w znaczniki &lt;code=java&gt;&lt;/code&gt;
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

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

Kopiuj
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);
    }
}

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 2x, ostatnio: bogdans
FL
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 9 lat
  • Postów:36
0

@bogdans

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

Kopiuj
@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));
   }
Wizzie
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 7 lat
0

BindingResult jest subklasą Errors?
Edit: Ok, jest

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

edytowany 2x, ostatnio: Wizzie
GA
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 5 lat
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.