Что такое @ModelAttribute в Spring MVC?

Для useMemo и useCallback (что по сути является просто частным случаем useMemo), если второй аргумент является пустым массивом, значение запоминается один раз и всегда возвращается.

Если второй аргумент опущен, значение никогда не запоминается, а useCallback и useMemo ничего не делают.

Возможно, есть какой-то крайний случай, когда вы можете условно запомнить:

useMemo(someValue, shouldMemoize ? [] : null)

Но в подавляющем большинстве случаев второй аргумент как useMemo, так и useCallback следует считать обязательным. И действительно, определения Typescript относятся к ним таким образом .

// Require a second argument, and it must be an array
function useCallback any>(callback: T, deps: DependencyList): T;

// Second argument can be undefined, but must be explicitly passed as undefined, not omitted.
function useMemo(factory: () => T, deps: DependencyList | undefined): T;

Существует открытый запрос на извлечение , который расширяет правило exhaustive-deps перехвата хуков, так что он вызовет ошибку lint, если второй аргумент пропущен, так что довольно скоро это будет быть ошибкой линтера.

354
задан Meinkraft 17 October 2015 в 18:30
поделиться

2 ответа

@ModelAttribute относится к свойству объекта модели (M в MVC;) Итак, допустим, у нас есть форма с объектом поддержки формы, который называется "Человек". Затем вы можете заставить Spring MVC передать этот объект методу контроллера с помощью аннотации @ModelAttribute :

public String processForm(@ModelAttribute("person") Person person){
    person.getStuff();
}

С другой стороны, аннотация используется для определения объектов, которые должны быть частью модели. Поэтому, если вы хотите, чтобы в модели была ссылка на объект Person, вы можете использовать следующий метод:

@ModelAttribute("person")
public Person getPerson(){
    return new Person();
}

Этот аннотированный метод позволит получить доступ к объекту Person в вашем представлении, поскольку он автоматически добавляется в модели Spring.

См. «Использование @ModelAttribute» .

387
ответ дан 23 November 2019 в 00:23
поделиться

На Уровне

1 Метода. Когда аннотация используется на уровне метода, это указывает, что цель того метода состоит в том, чтобы добавить один или несколько образцовых атрибутов

@ModelAttribute
public void addAttributes(Model model) {
model.addAttribute("india", "india");
}

В Аргументе метода 1. При использовании в качестве аргумента метода он указывает, что аргумент должен быть получен из модели. Если не представьте, и должен быть сначала инстанцирован и затем добавлен к модели и однажды существующий в модели, поля аргументов должны быть заполнены от всех параметров запроса, которые имеют соответствие именам Так, это связывает данные формы с бобом.

 @RequestMapping(value = "/addEmployee", method = RequestMethod.POST)
  public String submit(@ModelAttribute("employee") Employee employee) {
  return "employeeView";
  }
0
ответ дан 23 November 2019 в 00:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: