Spring Framework. Урок 22: Аннотация @ModelAttribute. HTML Формы (Thymeleaf).

  Рет қаралды 107,009

alishev

alishev

3 жыл бұрын

🔥 JavaRush - интерактивный курс по Java: bit.ly/323NTYY
Программистами не рождаются, ими становятся.
ПОЛНЫЙ КУРС ПО SPRING (Hibernate, REST, Boot, Security): swiftbook.org/courses/438
Продвинутая Java - swiftbook.org/courses/415
Мои уроки по Java EE - • Java EE для начинающих
Урок про Redirect и Forward - • Java EE для начинающих...
Репозиторий стартового проекта - github.com/NeilAlishev/Spring...
Репозиторий урока - github.com/NeilAlishev/Spring...
Реклама и сотрудничество: alishev.neil@gmail.com

Пікірлер: 186
@alishevN
@alishevN 3 жыл бұрын
ПОЛНЫЙ КУРС ПО SPRING (Hibernate, REST, Boot): swiftbook.org/courses/438 Плейлист этого курса: kzbin.info/aero/PLAma_mKffTOR5o0WNHnY0mTjKxnCgSXrZ Telegram: t.me/alishev_g
@DairaGames
@DairaGames 3 жыл бұрын
ПОЖАЛУЙСТА. Продолжайте. Udemy выкупил с Вашими курсами. Расскажите про собеседования. SOAP так и не сделали. От всего rus ютуба просим
@DairaGames
@DairaGames 3 жыл бұрын
Честно, столько видео пересмотрел. От Вашего не могу оторваться. Udemy за дня 2 - 3 закончил. Ибо всё прям как на родном языке объясняете. Не знаю, дар что-ли у Вас какой-то. Прям напрямую к мозгу вливаете информацию, даже переваривать не приходится (на столько всё разжевано). Спасибо большое. ВЫ ДЕЛАЕТЕ ЖИЗНЬ ЛУЧШЕ НУЖДАЮЩИХСЯ.
@MsDima9999
@MsDima9999 3 жыл бұрын
когда продолжение?
@fiit5960
@fiit5960 3 жыл бұрын
Спасибо за Ваш труд. Знали бы Вы как мы ценим это
@user-wt1tp2ff3h
@user-wt1tp2ff3h 3 жыл бұрын
А он может знать, если нажимать кнопку "СПОНСИРОВАТЬ"
@nurzatbekdunganov863
@nurzatbekdunganov863 3 жыл бұрын
Спасибо все легко и просто. Здоровья вам. Жду новые видео!
@fangstraish7623
@fangstraish7623 3 жыл бұрын
Спасибо за ещё один офигенный урок! Буду ждать продолжение =)
@88nbveh88
@88nbveh88 3 жыл бұрын
Наиль, твой курс лучший. Пожалуйста, не останавливайся.
@alexgeniusman
@alexgeniusman 3 жыл бұрын
Насчет крутости подачи материала за меня уже всё сказали) Спасибо! Жду новые уроки
@Yornero
@Yornero 3 жыл бұрын
Отличный урок, как всегда все супер доходчиво и по делу
@kuchibecka3744
@kuchibecka3744 3 жыл бұрын
Огромное спасибо за Ваш видеокурс по Java Spring. Всё подробно и понятно. Очень надеюсь, что вскоре будет про Hibernate и взаимодействие с конкретной БД!
@user-og1pc5sv7v
@user-og1pc5sv7v 2 жыл бұрын
Может уже находил по Hibernate хороший туториал?
@terry334dfg7
@terry334dfg7 3 жыл бұрын
Отлично! От души благодарю. Без сомнения действительно очень четко, понятно и ответственно обучаешь новому.
@rasulberov8093
@rasulberov8093 3 жыл бұрын
Здравствуйте Наиль! Во-первых, спасибо за ваши уроки, наверное одни из лучших на ютубе. Во-вторых, когда закончите со Spring MVC, запишите пожалуйста курс по Spring Boot. Тема микросервисов довольно-таки актуальная, я думаю многим понравится.
@OPtimus3d100
@OPtimus3d100 3 жыл бұрын
Спасибо за курс, до него вообще не вьезжал в Spring. Теперь все кажется очень просто.
@mksmsmirnov
@mksmsmirnov 3 жыл бұрын
Перешел по ссылке в описании, чтобы подробнее узнать про Redirect, в результате ознакомился ещё и с Forward. Спасибо!
@user-qx4xk5dq4v
@user-qx4xk5dq4v 3 жыл бұрын
Огромное спасибо! Ещё бы увидеть больше взаимодействия через фронт с БД(js, ajax, fetch...)
@tachank.a7553
@tachank.a7553 Жыл бұрын
Мне книга не смогла так объяснить эту инфу, как объяснил ты. Ты просто лучший!
@user-bk7ue9lp1i
@user-bk7ue9lp1i 2 жыл бұрын
Спасибо, Вам, за ваши уроки!)
@ilya7390
@ilya7390 3 жыл бұрын
Спасибо большое за ролики, надеюсь будет продолжение
@alishevN
@alishevN 3 жыл бұрын
Да, на днях
@nikolayvakar3235
@nikolayvakar3235 3 жыл бұрын
очень полезный курс, спасибо
@nikinou9197
@nikinou9197 Жыл бұрын
сейчас бы JavaRush рекламировать в ролике про Spring 😂👍 все видео супер! спасибо большое!
@kraken645
@kraken645 3 жыл бұрын
Зачетное видео! Лайк не глядя.
@user-ve8jb1yw8d
@user-ve8jb1yw8d 3 жыл бұрын
Спасибо за урок)
@user-cl3fg5pn2w
@user-cl3fg5pn2w 3 жыл бұрын
УРА! Жду продолжения!
@motiversia4714
@motiversia4714 3 жыл бұрын
Велике спасибі за вашу роботу, ви дуже радуєте нас . Другий урок за два дня, це просто неймовірно, ви балуєте нас. Якщо ви так продовжете, ми зовсім не проти 😇
@user-ox1id6yq1y
@user-ox1id6yq1y 3 жыл бұрын
Великий вернулся! Ура!!!
@yVq1WVav94
@yVq1WVav94 Жыл бұрын
Спасибо! Помогло решить проблему
@vladimirtulskii6713
@vladimirtulskii6713 3 жыл бұрын
Спасибо за курс! Понял интересный момент в изучении программирования, с любой новой темой действует закономерность: просто, просто, просто, нихрена не понятно)) Но со временем потом раскладываешь по полочкам в голове
@UnitXXVII
@UnitXXVII 3 жыл бұрын
Я на последний видео нахожусь на уровне "нихрена не понятно" - "но очень интересно" - "давай-ка я буду просто копипастить)"
@SERG__ZV
@SERG__ZV 2 жыл бұрын
@@UnitXXVII Я думал я один такой)
@user-nz9im7up1m
@user-nz9im7up1m Жыл бұрын
спасибо за ролики (видео уроки=)
@iorgankrat1118
@iorgankrat1118 3 жыл бұрын
Спасибо, изучаем)
@user-mz4xy2vo4v
@user-mz4xy2vo4v 3 жыл бұрын
Хочется продолжение по hibernate, spring boot, spring data, security. Работа базами данных. Я думаю подобный курс так же на udemy будут очень популярным
@user-lh5rv1gd2h
@user-lh5rv1gd2h 3 жыл бұрын
спасибо за видео!
@sinol78
@sinol78 3 жыл бұрын
4k - супер, уже можно на большом экране где-нибудь на площади транслировать!)
@daniilpodreshetnikov1648
@daniilpodreshetnikov1648 3 жыл бұрын
Уважуха! Спасибо
@Andrzej3935
@Andrzej3935 2 жыл бұрын
Ничего не понял, но очень интересно!) Шучу, не понял просто с первого раза, а с третьего вообще как по маслу..) Спасибо за ваш труд!
@user-ou2ix1cm7y
@user-ou2ix1cm7y 3 ай бұрын
ну, здорово, все получилось.
@aoveden197727
@aoveden197727 3 жыл бұрын
Наиль, спасибо за новые видосы. Используйте пожалуйста в работе с БД, EntityManager. А лучше два варианта реализации с SessionFactory и EntityManager.
@lekost13
@lekost13 3 жыл бұрын
Аааааа балдёёёёж, пасииииибаааа))))
@shushanbalayan6267
@shushanbalayan6267 3 жыл бұрын
keep going brother!!!
@AnnaSmirnova1
@AnnaSmirnova1 3 жыл бұрын
Спасибо!
@user-gx6be1lu2h
@user-gx6be1lu2h 3 жыл бұрын
Обнаружил неплохой способ усвоения материала - всё конспектировать) Пока думаешь, как сформулировать фразу, чтобы законспектировать, сам начинаешь что-то гуглить, и в итоге лучше разбираешься, чем когда просто смотришь)
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil Жыл бұрын
есть еще круче способ - сразу кодировать + конспект
@user-qx2qq2jr2h
@user-qx2qq2jr2h 3 жыл бұрын
Отличный курс! Все доступно объясняется и весь код работает, что для новичков очень важно. Будет ли продолжение в рамках данного курса?
@abnormal_type
@abnormal_type 3 жыл бұрын
по возможности залей на udemy, я думаю многие купят в поддержку) лично сам куплю) спасибо за уроки)
@user-wt1tp2ff3h
@user-wt1tp2ff3h 3 жыл бұрын
Так там есть курсы Наиля. Я купил.
@user-mm9dz8ls4z
@user-mm9dz8ls4z Жыл бұрын
Наиль если бы не Вы ,я бы никогда бы не прикоснулся к коду .У Вас талант преподавать.Спасибо за Ваш труд
@prostovasia8220
@prostovasia8220 Жыл бұрын
Спасибо💓
@Nievinor
@Nievinor 3 жыл бұрын
Спасибо)
@demitelix
@demitelix 3 жыл бұрын
привет. 23:26 над методом CREATE нет PostMapping 25:00 над методом снова появлется PostMapping :) рабоать на самом запуске не должно было ;) но спасибо за урок и весь курс по спрингу! очень помогло понять и решить одну проблемку после того как разжевал и про компоненты и про autowired
@user-pf7dw7ix6n
@user-pf7dw7ix6n 2 жыл бұрын
на 15:18 @PostMapping появляется над create в первый раз
@nzavodchikov
@nzavodchikov 3 жыл бұрын
@alishev, спасибо за уроки. Скажи пожалуйста, что планируется затронуть в курсе?
@user-jc3vv1vi2i
@user-jc3vv1vi2i 3 жыл бұрын
Спасибо
@natanielgarro9706
@natanielgarro9706 3 жыл бұрын
Я ставлю лайки не глядя
@user-xu2br2uf9z
@user-xu2br2uf9z 3 жыл бұрын
Спасибо за труд, а sql будет? Пы.Сы. Обычно о вашем канале и узнаёшь, пока проходишь курс на JavaRush)
@user-wt1tp2ff3h
@user-wt1tp2ff3h 3 жыл бұрын
JavaRush имеет смысл только до 20 лвл. Я сам прошел до 35 и знаю о чем говорю. Сейчас пошел к Немчинскому, чего и всем другим могу посоветовать. Вот там прокачка серьезная на менторинге.
@JaffaTilk777
@JaffaTilk777 3 жыл бұрын
@@user-wt1tp2ff3h А стажировку проходили на Джава Раш?
@user-rh7zr6oo8n
@user-rh7zr6oo8n 2 жыл бұрын
Спасибо за уроки! Не могу понять куда делась аннотация @PostMapping на 23 минуте? При создании этого метода она была..
@DaniilBasak
@DaniilBasak Жыл бұрын
очень хорошие уроки , но есть вопрос почему не отображается тег ,просто лэйбл висит и все, хотя есть открыть страничку просто через браузер все правильно
@user-iu2cn4qn5o
@user-iu2cn4qn5o 2 жыл бұрын
Спасибо. У меня в методе create пришлось вернуть "redirect:people" без слеша, в противном случае редирект шел на страницу people/people
@Snegurjan
@Snegurjan Жыл бұрын
Мне кажется так может объяснять человек, который просто до каждой сути, до каждой строчки кода сам докопался тяжелым трудом.
@user-ml2tp5xh1m
@user-ml2tp5xh1m 3 жыл бұрын
23:19 на методе create не стоит анатации @PostMapping(). Позже она там магическим образом появляется :) это говорит о том, что при монтаже был вырезан кусок с реальным первым запуском приложения. Это очень плохо! Т.к. теряется очень ценная часть обучения- поиск и устранения бага или ошибки.
@user-pf7dw7ix6n
@user-pf7dw7ix6n 2 жыл бұрын
на 15:18 @PostMapping появляется над create в первый раз
@markifive
@markifive 2 жыл бұрын
У меня это вызвало проблему потому что сразу не понял что я поменял и долго искал. и Только благодаря коментариям понял на что обратить внимание )
@The14Some1
@The14Some1 Жыл бұрын
26:03 это же будет значить, что по запросу /people/new?name=Alex нам будет показана форма, в которой поле name сразу же будет заполнено значением Alex, верно?
@olegk4589
@olegk4589 3 жыл бұрын
Купил спонсорскую подписку. У кого есть возможность - сделайте так же
@alishevN
@alishevN 3 жыл бұрын
Спасибо :)
@yerassylkelsingazin2408
@yerassylkelsingazin2408 3 жыл бұрын
А какие плюшки она дает?
@olegk4589
@olegk4589 3 жыл бұрын
alishev 🙏
@olegk4589
@olegk4589 3 жыл бұрын
Yerassyl Kelsingazin такой контент сам по себе стоит не мало денег. Просто чем больше будет спонсоров тем больше топ контента мы будем получать, поддерживая автора 😎
@pashadjoystick
@pashadjoystick 8 күн бұрын
очень много помогалок всяких у спринга - интересно если бы не было шаблонизатора то чем получать модель в представлении? - таймлиф это лишь вариант а значит что-то подключаемое и можно не подключив как-то добраться до модели - её то туда можно отправить даже если на том конце её никто не ждёт. и на сколько таймлиф быстро рендерит там всё? вдруг шаблонизаторы в точку его включений закачивает целую программу или даже ядро экосистемы как это делает блейзор ассембли. может быть это удобная надстройка но есть спортанский способ без посредников выгрызать данные модели?
@dmitriy4204
@dmitriy4204 Жыл бұрын
странно ... Адиль добавляет аннотацию @PostMapping() над методом create. На 20:45 она отсутствует, но на 24:57 снова появляется в коде ~_~ wtf что за магия
@user-qy9xb7ur9j
@user-qy9xb7ur9j 3 жыл бұрын
Очень нравится ваш курс, все доступно и понятно рассказано. Ждем новые видео. Есть некоторый вопрос: почему класс Person мы создаем сами, ручками почему не аннотируем его как Bean или Component (+propotype)? Раз уж мы используем спринг контекст и перекладываем создание объектов на него, было бы логично и создание этого класса переложить на его плечи.
@user-hx4nr1bl5g
@user-hx4nr1bl5g 3 жыл бұрын
Привет! Вопрос - почему в методе create в return мы указываем "redirect:/people", а не просто "people"? разве результат не будет таким же? p.s. Спасибо за отличные уроки по спрингу!
@lera6801
@lera6801 3 жыл бұрын
я так понимаю, когда мы пишем redirect то указываем url ссылку, а если просто return/people, то он ищет эту html страницу, но с таким названием не находит, поэтому выдаст ошибку
@The_Vict0r
@The_Vict0r 2 жыл бұрын
@@lera6801 Специально вернулся к ролику, чтобы выяснит в комментах про этот редирект)) Спасибо!
@mityaneversky4247
@mityaneversky4247 3 жыл бұрын
Чет я не понял, а где стоит хранить странички: в webapp или resources? Я просто в директории resources хранил до этого момента, теперь не знаю как лучше.
@igortarasov4482
@igortarasov4482 Жыл бұрын
Почему в new.html при создании формы в th:action мы отправляем на /people. И как между собой связываются метод create и страница new? Можно пожалуйста развернутый ответ от того кто понял тему?
@igortarasov4482
@igortarasov4482 Жыл бұрын
По ходу догнал. Спринг смотрит на связку тип запроса+адрес запроса в аннотации. В данном случае у нас @GetMapping() а значит запрос GET, а action /people. В следующем уроке @PathMapping("/{id}) А значит запрос PATH и в action ссылка на /people/id Так и связывает метод с представлением
@vitalieandrusca4742
@vitalieandrusca4742 2 жыл бұрын
Скорее всего тебе поставят памятник .
@vladimirkoreshkov8777
@vladimirkoreshkov8777 3 жыл бұрын
Вроде PeopleController обращается к модели Person и через нее уже к PersonDao, но на схеме вы сразу напрямую указали обращение к dao из контроллера. А так все нравится)
@alishevN
@alishevN 3 жыл бұрын
Нет, обращение к DAO напрямую в контроллере. Все ок.
@MrStim
@MrStim 3 жыл бұрын
Иными словами, класс PersonDAO - это представитель класса Person, говорящий: "Если Вы хотите получить данные от Person, то обращайтесь ко мне, я Вам всё скажу".
@kacetal
@kacetal 3 жыл бұрын
Как диспатчер различает два метода get id и get new, это потому что id это int? если бы id был строкой он бы не смог их различить?
@user-ve4ko4pi7i
@user-ve4ko4pi7i 3 жыл бұрын
Спасибо за видео! Подозреваю, что вопрос глупый, но почему мы не можем просто из метода create() контроллера возвращать просто "people/index" и не использовать редирект? И ещё, почему-то у вас на 23-20 секунде видео у метода create() куда-то девается аннотация @PostMapping - она не нужна тут разве? (у меня, если её убрать - ошибка 404 при нажатии на Create).
@M.Darsky
@M.Darsky 2 жыл бұрын
потому что нам нужна не просто хтмл-страница index, а что бы сработал метод index в контроллере, и произошла передача модели в таймлиф. насчет аннотации - она нужна, и она у него обратно появляется к концу урока. видимо, это "побочка" от монтажа видео,)
@kolyanlock
@kolyanlock 2 жыл бұрын
Была ещё сегодня такая магия, сервер никак не хотел подключаться, пробовал всякое, но пока не перезагрузился не заработало, это что ещё за проклятие?
@PlesneviyGRIB
@PlesneviyGRIB Жыл бұрын
Что делать, если в POST запрос приходит пустая модель? в ней не лежат никакие объекты
@moduleee
@moduleee 10 ай бұрын
В чем разница (так и так работает) public String create(@ModelAttribute("person") Person person) {...} между public String create(Person person) {...}
@alexeypavlovskiy2675
@alexeypavlovskiy2675 2 жыл бұрын
Мужики, у меня срочный вопрос, вечером сдавать проект!!!! Пожалуйста, помогите, почему не подключаются стили к странице? Я уже все перепробовал, решил перейти с фримаркера на thymeleaf, чтобы работать с html, потому что фримаркер не весь синтаксиса css поддерживает (я так понял, потому что ругается на мои стили, например на тильду в синиаксисе), а перешёл на html...вообще стили перестали подключаться
@user-fj7on8le9g
@user-fj7on8le9g 2 жыл бұрын
Спасибо! Но я вижу по видео, что долго не в выходить дальше Еще столько спрингов(((((
@Roma4086
@Roma4086 3 жыл бұрын
а чем отличается @RequestBody от @ModelAttribute?
@kirilla994
@kirilla994 3 жыл бұрын
23:18 куда-то пропала аннотация PostMapping у create метода
@user-hf8cj6lq4m
@user-hf8cj6lq4m 3 жыл бұрын
Так точно! Может это пасхалочка..
@ukupchik
@ukupchik 3 жыл бұрын
Здравствуйте, скажите, как правильно в данном проекте задать кодировку, чтобы корректно отображалась кириллица?
@xxxyyy2970
@xxxyyy2970 2 жыл бұрын
возникла такая же проблема. подскажите, пожалуйста, как вы ее решили?
@artemartem3234
@artemartem3234 Жыл бұрын
нужно добавить строки кода с кодировкой в класс SpringConfig: public class SpringConfig implements WebMvcConfigurer { private final ApplicationContext applicationContext; @Autowired public SpringConfig(ApplicationContext applicationContext) { this.applicationContext = applicationContext; } @Bean public SpringResourceTemplateResolver templateResolver() { SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver(); templateResolver.setApplicationContext(applicationContext); templateResolver.setPrefix("/WEB-INF/views/"); templateResolver.setSuffix(".html"); templateResolver.setCharacterEncoding("UTF-8"); return templateResolver; } @Bean public SpringTemplateEngine templateEngine() { SpringTemplateEngine templateEngine = new SpringTemplateEngine(); templateEngine.setTemplateResolver(templateResolver()); templateEngine.setEnableSpringELCompiler(true); return templateEngine; } @Override public void configureViewResolvers(ViewResolverRegistry registry) { ThymeleafViewResolver viewResolver = new ThymeleafViewResolver(); viewResolver.setTemplateEngine(templateEngine()); viewResolver.setOrder(1); viewResolver.setCharacterEncoding("UTF-8"); registry.viewResolver(viewResolver); } }
@kirillturchinskiy4900
@kirillturchinskiy4900 3 жыл бұрын
Делал всё по курсу и теперь я понял что попал в проблему) Каким образом можно замапить еще один POST запрос, по какому пути его лучше ставить? Почему единственный POST запрос был повешен на /trains, на что это влияет? Спасибо)
@alishevN
@alishevN 3 жыл бұрын
Для чего ещё один POST запрос?
@kirillturchinskiy4900
@kirillturchinskiy4900 3 жыл бұрын
@@alishevN для обновления сущности по id. Во всём разобрался) В любом случае спасибо за ваши видео. Без них бы не разобрался
@user-fi9ej6pm4r
@user-fi9ej6pm4r 3 жыл бұрын
Когда будут новые ?
@jorjgizer5158
@jorjgizer5158 11 ай бұрын
Интересно, почему при перезапуске системы все наши введенные имена не сохраняются? Мы же вроде добавляем их в лист. Чикнул размер листа - он увеличивается.
@happyf1re
@happyf1re 10 ай бұрын
при перезапуске системы, лист - удаляется, чтобы сохранить данные, нужно записывать их в базу данных.. лист - это некое упрощение в данном случае
@reasantreasant5572
@reasantreasant5572 3 жыл бұрын
Будет ли урок по авторизации и spring security?
@alishevN
@alishevN 3 жыл бұрын
да
@zuz6631
@zuz6631 11 ай бұрын
Если у вас возникает ошибка 400, вероятно, вы сразу написали: public String newPerson(@ModelAttribute("person") Person person) с использованием аннотации, а не пробовали способ без аннотации. Чтобы избавиться от ошибки, нужно добавить пустой конструктор в класс Person
@williamjohnson8185
@williamjohnson8185 3 жыл бұрын
Здравствуй Наиль, что тебе ближе, Android или Web? Можешь посоветовать, где изучать Kotlin и андроид разработку в целом? Спасибо
@alishevN
@alishevN 3 жыл бұрын
Web. Насчёт kotlin не знаю. Посмотрите курсы на udacity. Но они на английском.
@williamjohnson8185
@williamjohnson8185 3 жыл бұрын
@@alishevN А на этом канале будет продолжение курса по Android?
@alishevN
@alishevN 3 жыл бұрын
Посмотрим
@lera6801
@lera6801 Жыл бұрын
Наиль, сделала по вашему примеру, но решила проверить как приложение будет работать без аннотации @ModelAttribute и все работает также, объект сохраняется. Возможно это создает какие-то другие проблемы, если не прописывать?
@atterson1441
@atterson1441 Жыл бұрын
Магия Спринга)) Лучше не полагаться на магию, наверное
@AnnaIsHere
@AnnaIsHere 3 жыл бұрын
Почему в методе newPerson мы должны передавать Model? Ведь в форме мы нигде не отображаем объект (его поля), а лишь заполняем поля для будущего объекта.
@alishevN
@alishevN 3 жыл бұрын
Thymeleaf'у нужен пустой объект для формы. Например дальше, с помощью этого будет работать валидация значений полей.
@vvkislyakoff6071
@vvkislyakoff6071 2 жыл бұрын
@@alishevN А в методе create() нам обязательно создавать еще раз новый объект через @ModelAttribute? или достаточно в аргументах указать что будет приниматься Person person, так как мы уже его создали в newPerson() и он передался в форму?
@KirillBuglak
@KirillBuglak Жыл бұрын
У кого ошибка 405 - в html в th: action = "url или RequestMapping контроллера а не страницы со всеми людьми " тк они могут не совпадать
@AndreyMalygin
@AndreyMalygin 2 жыл бұрын
Ахаххах, пришел к тебе из JAVARUSH
@user-sy1ts7xj8c
@user-sy1ts7xj8c 3 жыл бұрын
Добрый вечер, проблема есть и никак не пойму как решить.. при редиректе выкидывает на страницу типа localhost:8080/people/@%7B/people%7D что можно с этим сделать?
@mykytasvintytskyi979
@mykytasvintytskyi979 3 жыл бұрын
Укажите в форме th:action="@{/people}", возможно у вас action="@{/people}"
@wolfram2230
@wolfram2230 3 жыл бұрын
Было бы неплохо раскрыть проблему отображения кириллицы на сайте(???????) и изображений, но, возможно, картинки только у меня не показывает((
@alishevN
@alishevN 3 жыл бұрын
посмотрите в 20 уроке в комментариях. там я ответил, как сделать, чтобы отображалась кириллица
@wolfram2230
@wolfram2230 3 жыл бұрын
@@alishevN Ура! Спасибо, жду новых видео)
@andrei8299
@andrei8299 3 жыл бұрын
Вот вчера я все поправил по этому совету и кириллица работает на страницах. Но почему-то при сабмите имени на русском оно в people отображается снова в непонятной кодировке. У вас все норм работало? update. Решил и эту проблему, в web.xml файле Tomcat раскомментрировал код для setCharacterEncodingFilter и mapping к нему. Взял отсюда в одном из посл комментариев: coderoad.ru/138948/%D0%9A%D0%B0%D0%BA-%D0%B7%D0%B0%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D1%82%D1%8C-UTF-8-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D1%82%D1%8C-%D0%B2-Java-webapps
@23GreyRaven
@23GreyRaven 3 жыл бұрын
@@andrei8299 спасибо, мне помогло!
@user-jt5it4oc6q
@user-jt5it4oc6q 3 жыл бұрын
Почему может не работать redirect:/people? При запросе /people отображается список всех людей, redirect же не срабатывает. Синтаксической ошибки точно нет, уже раз 10 всё перепроверил.
@user-jt5it4oc6q
@user-jt5it4oc6q 3 жыл бұрын
Разобрался... в представлении не был указан полный путь запроса th:action="@{/people/newthperson}" у меня было без "/people" - он у меня указан в @RequestMapping("/people") над классом.
@rudolfsikorsky7900
@rudolfsikorsky7900 3 жыл бұрын
1. Пустой объект - это когда нажимаешь кнопку не заполнив поле? У меня пустой чел не создаётся. По кр мере, с списке не отображается. 2. Если поле заполнить кириллицей - в список попадут кракозябры. Добавки из 20 урока сделаны, но этого, видимо, недостаточно. Наверно надо таймлиф конфигурить как-то.
@vvkislyakoff6071
@vvkislyakoff6071 2 жыл бұрын
создается, просто полей для отображения нет в шаблоне-если туда подставить, чтобы отображал id, то отобразится, а так как имя null то пусто. можно проверить сделав вызов из list или по индексу или size. я у себя проверял. создается.
@ilyaivanov6102
@ilyaivanov6102 2 жыл бұрын
почему не пользуетесь alt+ctrl+L
@paulkulakov6690
@paulkulakov6690 2 жыл бұрын
@alishev Наиль, подскажи, пожалуйста, как решить проблему с кодировкой? если в инпуты вбиваем кириллицу, то в результате получаем индексы юникода. Пробовал и в форме менять кодировку, и в конфиге добавлять кодировку, не работает. Несколько дней потратил на поиски и ничего не могу найти дельного
@xxxyyy2970
@xxxyyy2970 2 жыл бұрын
возникла такая же проблема, подскажите как решили, пожалуйста
@paulkulakov6690
@paulkulakov6690 2 жыл бұрын
@@xxxyyy2970 Решается это добавлением фильтра. Но сейчас в моменте готовое решение не дам, надо погуглить. Там есть и для XML конфига и для аннотаций в виде подключения фильтра как компонента. В целом, если это проект учебный, то не заморачивайся, потом на буте будешь писать, там такой херни не встретишь. Ну а если уж прям сильно хочется, то загугли. На вскидку вроде оно сразу выскакиевает у баелданга www.yandex.ru/search/?lr=11058&offline_search=1&text=UTF+encoding+filter+Spring&clid=2242348&from=chromesearch
@xxxyyy2970
@xxxyyy2970 2 жыл бұрын
@@paulkulakov6690 спасибо, уже решил эту проблему
@qwert2415
@qwert2415 2 жыл бұрын
Была ошибка с POST запросом. Добавил в аннотацию @PostMapping атрибут "/people", и в new.html убрал слеш / в th:action="/people" @PostMapping("/people") public String create(@ModelAttribute("person") Person person){ personDAO.save(person); return "redirect:/people"; }
@gunter8446
@gunter8446 Жыл бұрын
тоже самое произошло, ошибка 405
@user-fy1qx1gu2h
@user-fy1qx1gu2h Жыл бұрын
Спасибо большое за помощь! Помог решить ошибку 405!
@dimamakarov9254
@dimamakarov9254 9 ай бұрын
Тоже самое, вопрос почему у автора тогда все работает. Взял код автора с гитхаба - тоже выдает ошибку.
@user-mx6fl6rx8x
@user-mx6fl6rx8x Жыл бұрын
Здравствуйте, появился такой вопрос. Как спринг понимает, что при нажатии на кнопку мы должны вызвать метод create и нас перебросит на people? Или это происходит потому что у нас есть аннотация @PostMapping и он понимает что при http запросе POST нас нужно туда перебросить? Если кто-нибудь разъяснит этот момент буду очень благодарен
@user-rl5mh5wp1o
@user-rl5mh5wp1o Жыл бұрын
Бьюсь с тем же вопросом. У меня например ни фига не вызывается метод create.
@user-jw7tj1mp6o
@user-jw7tj1mp6o 9 ай бұрын
хоть и 5 месяцев прошло с момента вашего вопроса, но отвечу(может быть будет полезно кому нибудь): в тэге form в аттрибут action мы передаем {/people}, после нажатия на кнопку он переходит по этому адресу и так как у нашего post метода в контроллере нет значения, то он переходит именно в пустой метод. Если мы например в @PostMapping напишем ("/create"), то и в action нам надо будет прописать (${/people/create"})
@user-gv5bf8wg3z
@user-gv5bf8wg3z 2 ай бұрын
@@user-jw7tj1mp6o , спасибо Вам
@user-wt1tp2ff3h
@user-wt1tp2ff3h 3 жыл бұрын
Наиль, привет! А как кодировки прикрутить к представлениям, а то на латинице в контроллер все ок прилетает, а кирилица в виде "фывждирфчсÐ"
@user-wt1tp2ff3h
@user-wt1tp2ff3h 3 жыл бұрын
Отвечу тут для потомков)))) В Спринг конфиг: @Override public void configureViewResolvers(ViewResolverRegistry registry) { ThymeleafViewResolver resolver = new ThymeleafViewResolver(); resolver.setContentType(contentType); resolver.setCharacterEncoding(encoding); resolver.setTemplateEngine(templateEngine()); registry.viewResolver(resolver); } В спринг инициализатор(тот, что вместо web.xml): private void registerCharacterEncodingFilter(ServletContext aContext) { FilterRegistration.Dynamic characterEncodingFilter = aContext.addFilter("encodingFilter", new CharacterEncodingFilter()); characterEncodingFilter.setInitParameter("encoding", "UTF-8"); characterEncodingFilter.setInitParameter("forceEncoding", "true"); characterEncodingFilter.addMappingForUrlPatterns(null, false, "/*"); } и вызывать его в onStartup(ServletContext aServletContext). Тогда кодировки из проперти и при сохранении в базу будут работать как надо. На кириллице или иврите сохранится в базу и вычитается оттуда, из проперти тоже.
@Aticinsane
@Aticinsane 2 жыл бұрын
@@user-wt1tp2ff3h Спасибо, что написали решение. Но мне почему-то не помогло - сервер возвращает 404 ошибку. Если закоментить onStartup (ServletContext sc), то ошибка пропадает, но проблема с кодировкой остается.
@Aticinsane
@Aticinsane 2 жыл бұрын
Через гугление и опытным путем нашел причину ошибки у себя. Алексей Поляков написал правильное решение, только в моем случае в методе onStartup (ServletContext sc) я удалил вызов super.onStartup(servletContext); Этот вызов нужно оставить.
@andrqxa
@andrqxa 2 жыл бұрын
@@Aticinsane и ​ @Алексей Поляков - cпасибо большое. И кстати можно отдельный метод registerCharacterEncodingFilter и не создавать, я все прописал прямо в onStartup
@yevheniibatiievskyi
@yevheniibatiievskyi 2 жыл бұрын
org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.index_jsp И как с этим бороться непонятно...
@denisa7684
@denisa7684 3 жыл бұрын
Когда нужно писать метод Main в приложении а когда нет?
@AnnaIsHere
@AnnaIsHere 3 жыл бұрын
Всегда
@user-ml2tp5xh1m
@user-ml2tp5xh1m 3 жыл бұрын
Main нужен в классе только если вы его хотите напустить напрямую. В серверных приложения он не нужен. В спрингбуте он есть, т.к. спрингбут содержит встроенный сервер и запускается с этого класса.
@igothigh
@igothigh 2 жыл бұрын
Последние два урока как-то тяжко идут. Слишком много всего нужно создать, чтобы получить такую простую страничку. Судя по комментариям я один такой. Печально как-то.
@user-ml2tp5xh1m
@user-ml2tp5xh1m 3 жыл бұрын
19:20 Зачем PEOPLE_COUNT объявлено статическим?
@vvkislyakoff6071
@vvkislyakoff6071 2 жыл бұрын
будет принадлежать классу, а не каждому объекту вновь созданному, т.е. при изменении этого поля оно будет меняться у всех объектов одновременно. одно из применений статических полей класса. но в данном конкретном случае, я не вижу прикладного смысла, т.к. у нас один экземпляр PersonDAO при создании контроллера, тоже было бы интересно посмотреть, какие могут быть сценарии в данном случае, чтобы была логика созданий множества экземпляров PersonDAO. Может как вариант, возможно применение PersonDAO для другого контроллера, а нумерация должна будет быть сквозной с недублирующимися уникальными ID сквозь всю систему. Тем более этот id обычно в SQL сам делается уникальным и автоинкрементирующимся и логикой не описывается.
@user-ke6oy4xv6h
@user-ke6oy4xv6h Жыл бұрын
У меня почему-то открывается пустая страница, хотя все правильно написал Было у кого?
@borbotd1655
@borbotd1655 Жыл бұрын
У меня была опечатка в new.html я написал metod а нужно method
@alexmacmillan2690
@alexmacmillan2690 7 ай бұрын
Такая же проблема (
@genndy4538
@genndy4538 3 жыл бұрын
Сколько теперь Spring программистов развелось в России? )))
@Misster_Lis
@Misster_Lis Жыл бұрын
первое видео, трудное для понимания даже с 3 раз :(
@kyrylochornobryvets3385
@kyrylochornobryvets3385 3 жыл бұрын
Не всегда понятно определение . Мне кажется было бы уместней вместо определения употреблять конкретные определения точек приёма и обработки информации, такие как или .
🌊Насколько Глубокий Океан ? #shorts
00:42
King jr
Рет қаралды 3,6 МЛН
Backstage 🤫 tutorial #elsarca #tiktok
00:13
Elsa Arca
Рет қаралды 40 МЛН
Smart Sigma Kid #funny #sigma #comedy
00:19
CRAZY GREAPA
Рет қаралды 10 МЛН
MEU IRMÃO FICOU FAMOSO
00:52
Matheus Kriwat
Рет қаралды 10 МЛН
Spring Boot & Thymeleaf Tutorial (+ Bootstrap)
12:03
Kris Foster
Рет қаралды 93 М.
HOW do I serve WEB TEMPLATES with SPRING BOOT 3?
10:13
Pro Coder
Рет қаралды 10 М.
Обработка исключений в контроллерах Spring
10:48
Алексей Кутепов
Рет қаралды 2,7 М.
🌊Насколько Глубокий Океан ? #shorts
00:42
King jr
Рет қаралды 3,6 МЛН