Сделанная страница с ошибками, страница с направлениями, с кафедрами, начата страница с пользователями
This commit is contained in:
parent
e8a77a66d1
commit
90138ca93d
BIN
data.mv.db
BIN
data.mv.db
Binary file not shown.
386
data.trace.db
386
data.trace.db
@ -26159,3 +26159,389 @@ java.sql.SQLClientInfoException: Client info name 'ApplicationName' not supporte
|
||||
at org.jkiss.dbeaver.ui.LoadingJob.run(LoadingJob.java:78)
|
||||
at org.jkiss.dbeaver.model.runtime.AbstractJob.run(AbstractJob.java:115)
|
||||
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
|
||||
2024-05-23 14:35:29.633369+04:00 database: flush
|
||||
org.h2.message.DbException: Внутренняя ошибка: "org.h2.mvstore.MVStoreException: The file is locked: D:/html-prog/Semestr 2/repos/Internet_Programming_2/data.mv.db [2.2.224/7]"
|
||||
General error: "org.h2.mvstore.MVStoreException: The file is locked: D:/html-prog/Semestr 2/repos/Internet_Programming_2/data.mv.db [2.2.224/7]" [50000-224]
|
||||
at org.h2.message.DbException.get(DbException.java:212)
|
||||
at org.h2.message.DbException.convert(DbException.java:407)
|
||||
at org.h2.mvstore.db.Store.lambda$new$0(Store.java:122)
|
||||
at org.h2.mvstore.MVStore.handleException(MVStore.java:1546)
|
||||
at org.h2.mvstore.MVStore.panic(MVStore.java:371)
|
||||
at org.h2.mvstore.MVStore.<init>(MVStore.java:291)
|
||||
at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2035)
|
||||
at org.h2.mvstore.db.Store.<init>(Store.java:133)
|
||||
at org.h2.engine.Database.<init>(Database.java:326)
|
||||
at org.h2.engine.Engine.openSession(Engine.java:92)
|
||||
at org.h2.engine.Engine.openSession(Engine.java:222)
|
||||
at org.h2.engine.Engine.createSession(Engine.java:201)
|
||||
at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:343)
|
||||
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:125)
|
||||
at org.h2.Driver.connect(Driver.java:59)
|
||||
at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
|
||||
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359)
|
||||
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201)
|
||||
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:470)
|
||||
at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561)
|
||||
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:100)
|
||||
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
|
||||
at org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration.getConnectionUrl(H2ConsoleAutoConfiguration.java:94)
|
||||
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
|
||||
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
|
||||
at java.base/java.util.stream.SortedOps$RefSortingSink.end(SortedOps.java:395)
|
||||
at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:258)
|
||||
at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:258)
|
||||
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510)
|
||||
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
|
||||
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575)
|
||||
at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)
|
||||
at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616)
|
||||
at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:622)
|
||||
at java.base/java.util.stream.ReferencePipeline.toList(ReferencePipeline.java:627)
|
||||
at org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration.logDataSources(H2ConsoleAutoConfiguration.java:86)
|
||||
at org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration.lambda$h2Console$0(H2ConsoleAutoConfiguration.java:69)
|
||||
at org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration.withThreadContextClassLoader(H2ConsoleAutoConfiguration.java:78)
|
||||
at org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration.h2Console(H2ConsoleAutoConfiguration.java:69)
|
||||
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
|
||||
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:140)
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:644)
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:636)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1335)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1165)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326)
|
||||
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:205)
|
||||
at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:210)
|
||||
at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:201)
|
||||
at org.springframework.boot.web.servlet.ServletContextInitializerBeans.addServletContextInitializerBeans(ServletContextInitializerBeans.java:96)
|
||||
at org.springframework.boot.web.servlet.ServletContextInitializerBeans.<init>(ServletContextInitializerBeans.java:85)
|
||||
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.getServletContextInitializerBeans(ServletWebServerApplicationContext.java:266)
|
||||
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.selfInitialize(ServletWebServerApplicationContext.java:240)
|
||||
at org.springframework.boot.web.embedded.tomcat.TomcatStarter.onStartup(TomcatStarter.java:52)
|
||||
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4866)
|
||||
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
|
||||
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1332)
|
||||
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1322)
|
||||
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
|
||||
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
|
||||
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
|
||||
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:866)
|
||||
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:845)
|
||||
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
|
||||
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1332)
|
||||
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1322)
|
||||
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
|
||||
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
|
||||
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
|
||||
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:866)
|
||||
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:240)
|
||||
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
|
||||
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:433)
|
||||
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
|
||||
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:921)
|
||||
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
|
||||
at org.apache.catalina.startup.Tomcat.start(Tomcat.java:437)
|
||||
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:126)
|
||||
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.<init>(TomcatWebServer.java:105)
|
||||
at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer(TomcatServletWebServerFactory.java:499)
|
||||
at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:218)
|
||||
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:188)
|
||||
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:162)
|
||||
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:618)
|
||||
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
|
||||
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
|
||||
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456)
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:334)
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354)
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343)
|
||||
at com.example.demo.DemoApplication.main(DemoApplication.java:38)
|
||||
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
|
||||
at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50)
|
||||
Caused by: org.h2.jdbc.JdbcSQLNonTransientException: Внутренняя ошибка: "org.h2.mvstore.MVStoreException: The file is locked: D:/html-prog/Semestr 2/repos/Internet_Programming_2/data.mv.db [2.2.224/7]"
|
||||
General error: "org.h2.mvstore.MVStoreException: The file is locked: D:/html-prog/Semestr 2/repos/Internet_Programming_2/data.mv.db [2.2.224/7]" [50000-224]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:566)
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:489)
|
||||
... 99 more
|
||||
Caused by: org.h2.mvstore.MVStoreException: The file is locked: D:/html-prog/Semestr 2/repos/Internet_Programming_2/data.mv.db [2.2.224/7]
|
||||
at org.h2.mvstore.DataUtils.newMVStoreException(DataUtils.java:996)
|
||||
at org.h2.mvstore.SingleFileStore.lockFileChannel(SingleFileStore.java:143)
|
||||
at org.h2.mvstore.SingleFileStore.open(SingleFileStore.java:117)
|
||||
at org.h2.mvstore.SingleFileStore.open(SingleFileStore.java:81)
|
||||
at org.h2.mvstore.MVStore.<init>(MVStore.java:286)
|
||||
... 93 more
|
||||
2024-05-23 14:35:31.977445+04:00 database: flush
|
||||
org.h2.message.DbException: Внутренняя ошибка: "org.h2.mvstore.MVStoreException: The file is locked: D:/html-prog/Semestr 2/repos/Internet_Programming_2/data.mv.db [2.2.224/7]"
|
||||
General error: "org.h2.mvstore.MVStoreException: The file is locked: D:/html-prog/Semestr 2/repos/Internet_Programming_2/data.mv.db [2.2.224/7]" [50000-224]
|
||||
at org.h2.message.DbException.get(DbException.java:212)
|
||||
at org.h2.message.DbException.convert(DbException.java:407)
|
||||
at org.h2.mvstore.db.Store.lambda$new$0(Store.java:122)
|
||||
at org.h2.mvstore.MVStore.handleException(MVStore.java:1546)
|
||||
at org.h2.mvstore.MVStore.panic(MVStore.java:371)
|
||||
at org.h2.mvstore.MVStore.<init>(MVStore.java:291)
|
||||
at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2035)
|
||||
at org.h2.mvstore.db.Store.<init>(Store.java:133)
|
||||
at org.h2.engine.Database.<init>(Database.java:326)
|
||||
at org.h2.engine.Engine.openSession(Engine.java:92)
|
||||
at org.h2.engine.Engine.openSession(Engine.java:222)
|
||||
at org.h2.engine.Engine.createSession(Engine.java:201)
|
||||
at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:343)
|
||||
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:125)
|
||||
at org.h2.Driver.connect(Driver.java:59)
|
||||
at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
|
||||
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359)
|
||||
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201)
|
||||
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:470)
|
||||
at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561)
|
||||
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:100)
|
||||
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
|
||||
at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122)
|
||||
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:428)
|
||||
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.delegateWork(JdbcIsolationDelegate.java:61)
|
||||
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.getJdbcEnvironmentUsingJdbcMetadata(JdbcEnvironmentInitiator.java:276)
|
||||
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:107)
|
||||
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:68)
|
||||
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:130)
|
||||
at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263)
|
||||
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:238)
|
||||
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:215)
|
||||
at org.hibernate.boot.model.relational.Database.<init>(Database.java:45)
|
||||
at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.getDatabase(InFlightMetadataCollectorImpl.java:223)
|
||||
at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:191)
|
||||
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:170)
|
||||
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1432)
|
||||
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1503)
|
||||
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75)
|
||||
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:390)
|
||||
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409)
|
||||
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396)
|
||||
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:366)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1833)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1782)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326)
|
||||
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
|
||||
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1234)
|
||||
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:952)
|
||||
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624)
|
||||
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
|
||||
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
|
||||
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456)
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:334)
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354)
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343)
|
||||
at com.example.demo.DemoApplication.main(DemoApplication.java:38)
|
||||
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
|
||||
at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50)
|
||||
Caused by: org.h2.jdbc.JdbcSQLNonTransientException: Внутренняя ошибка: "org.h2.mvstore.MVStoreException: The file is locked: D:/html-prog/Semestr 2/repos/Internet_Programming_2/data.mv.db [2.2.224/7]"
|
||||
General error: "org.h2.mvstore.MVStoreException: The file is locked: D:/html-prog/Semestr 2/repos/Internet_Programming_2/data.mv.db [2.2.224/7]" [50000-224]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:566)
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:489)
|
||||
... 64 more
|
||||
Caused by: org.h2.mvstore.MVStoreException: The file is locked: D:/html-prog/Semestr 2/repos/Internet_Programming_2/data.mv.db [2.2.224/7]
|
||||
at org.h2.mvstore.DataUtils.newMVStoreException(DataUtils.java:996)
|
||||
at org.h2.mvstore.SingleFileStore.lockFileChannel(SingleFileStore.java:143)
|
||||
at org.h2.mvstore.SingleFileStore.open(SingleFileStore.java:117)
|
||||
at org.h2.mvstore.SingleFileStore.open(SingleFileStore.java:81)
|
||||
at org.h2.mvstore.MVStore.<init>(MVStore.java:286)
|
||||
... 58 more
|
||||
2024-05-23 14:36:30.468177+04:00 database: flush
|
||||
org.h2.message.DbException: Внутренняя ошибка: "org.h2.mvstore.MVStoreException: The file is locked: D:/html-prog/Semestr 2/repos/Internet_Programming_2/data.mv.db [2.2.224/7]"
|
||||
General error: "org.h2.mvstore.MVStoreException: The file is locked: D:/html-prog/Semestr 2/repos/Internet_Programming_2/data.mv.db [2.2.224/7]" [50000-224]
|
||||
at org.h2.message.DbException.get(DbException.java:212)
|
||||
at org.h2.message.DbException.convert(DbException.java:407)
|
||||
at org.h2.mvstore.db.Store.lambda$new$0(Store.java:122)
|
||||
at org.h2.mvstore.MVStore.handleException(MVStore.java:1546)
|
||||
at org.h2.mvstore.MVStore.panic(MVStore.java:371)
|
||||
at org.h2.mvstore.MVStore.<init>(MVStore.java:291)
|
||||
at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2035)
|
||||
at org.h2.mvstore.db.Store.<init>(Store.java:133)
|
||||
at org.h2.engine.Database.<init>(Database.java:326)
|
||||
at org.h2.engine.Engine.openSession(Engine.java:92)
|
||||
at org.h2.engine.Engine.openSession(Engine.java:222)
|
||||
at org.h2.engine.Engine.createSession(Engine.java:201)
|
||||
at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:343)
|
||||
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:125)
|
||||
at org.h2.Driver.connect(Driver.java:59)
|
||||
at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
|
||||
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359)
|
||||
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201)
|
||||
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:470)
|
||||
at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561)
|
||||
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:100)
|
||||
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
|
||||
at org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration.getConnectionUrl(H2ConsoleAutoConfiguration.java:94)
|
||||
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
|
||||
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
|
||||
at java.base/java.util.stream.SortedOps$RefSortingSink.end(SortedOps.java:395)
|
||||
at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:258)
|
||||
at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:258)
|
||||
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510)
|
||||
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
|
||||
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575)
|
||||
at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)
|
||||
at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616)
|
||||
at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:622)
|
||||
at java.base/java.util.stream.ReferencePipeline.toList(ReferencePipeline.java:627)
|
||||
at org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration.logDataSources(H2ConsoleAutoConfiguration.java:86)
|
||||
at org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration.lambda$h2Console$0(H2ConsoleAutoConfiguration.java:69)
|
||||
at org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration.withThreadContextClassLoader(H2ConsoleAutoConfiguration.java:78)
|
||||
at org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration.h2Console(H2ConsoleAutoConfiguration.java:69)
|
||||
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
|
||||
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:140)
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:644)
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:636)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1335)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1165)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326)
|
||||
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:205)
|
||||
at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:210)
|
||||
at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:201)
|
||||
at org.springframework.boot.web.servlet.ServletContextInitializerBeans.addServletContextInitializerBeans(ServletContextInitializerBeans.java:96)
|
||||
at org.springframework.boot.web.servlet.ServletContextInitializerBeans.<init>(ServletContextInitializerBeans.java:85)
|
||||
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.getServletContextInitializerBeans(ServletWebServerApplicationContext.java:266)
|
||||
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.selfInitialize(ServletWebServerApplicationContext.java:240)
|
||||
at org.springframework.boot.web.embedded.tomcat.TomcatStarter.onStartup(TomcatStarter.java:52)
|
||||
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4866)
|
||||
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
|
||||
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1332)
|
||||
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1322)
|
||||
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
|
||||
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
|
||||
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
|
||||
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:866)
|
||||
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:845)
|
||||
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
|
||||
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1332)
|
||||
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1322)
|
||||
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
|
||||
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
|
||||
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
|
||||
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:866)
|
||||
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:240)
|
||||
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
|
||||
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:433)
|
||||
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
|
||||
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:921)
|
||||
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
|
||||
at org.apache.catalina.startup.Tomcat.start(Tomcat.java:437)
|
||||
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:126)
|
||||
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.<init>(TomcatWebServer.java:105)
|
||||
at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer(TomcatServletWebServerFactory.java:499)
|
||||
at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:218)
|
||||
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:188)
|
||||
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:162)
|
||||
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:618)
|
||||
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
|
||||
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
|
||||
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456)
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:334)
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354)
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343)
|
||||
at com.example.demo.DemoApplication.main(DemoApplication.java:38)
|
||||
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
|
||||
at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50)
|
||||
Caused by: org.h2.jdbc.JdbcSQLNonTransientException: Внутренняя ошибка: "org.h2.mvstore.MVStoreException: The file is locked: D:/html-prog/Semestr 2/repos/Internet_Programming_2/data.mv.db [2.2.224/7]"
|
||||
General error: "org.h2.mvstore.MVStoreException: The file is locked: D:/html-prog/Semestr 2/repos/Internet_Programming_2/data.mv.db [2.2.224/7]" [50000-224]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:566)
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:489)
|
||||
... 99 more
|
||||
Caused by: org.h2.mvstore.MVStoreException: The file is locked: D:/html-prog/Semestr 2/repos/Internet_Programming_2/data.mv.db [2.2.224/7]
|
||||
at org.h2.mvstore.DataUtils.newMVStoreException(DataUtils.java:996)
|
||||
at org.h2.mvstore.SingleFileStore.lockFileChannel(SingleFileStore.java:143)
|
||||
at org.h2.mvstore.SingleFileStore.open(SingleFileStore.java:117)
|
||||
at org.h2.mvstore.SingleFileStore.open(SingleFileStore.java:81)
|
||||
at org.h2.mvstore.MVStore.<init>(MVStore.java:286)
|
||||
... 93 more
|
||||
2024-05-23 14:36:32.717810+04:00 database: flush
|
||||
org.h2.message.DbException: Внутренняя ошибка: "org.h2.mvstore.MVStoreException: The file is locked: D:/html-prog/Semestr 2/repos/Internet_Programming_2/data.mv.db [2.2.224/7]"
|
||||
General error: "org.h2.mvstore.MVStoreException: The file is locked: D:/html-prog/Semestr 2/repos/Internet_Programming_2/data.mv.db [2.2.224/7]" [50000-224]
|
||||
at org.h2.message.DbException.get(DbException.java:212)
|
||||
at org.h2.message.DbException.convert(DbException.java:407)
|
||||
at org.h2.mvstore.db.Store.lambda$new$0(Store.java:122)
|
||||
at org.h2.mvstore.MVStore.handleException(MVStore.java:1546)
|
||||
at org.h2.mvstore.MVStore.panic(MVStore.java:371)
|
||||
at org.h2.mvstore.MVStore.<init>(MVStore.java:291)
|
||||
at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2035)
|
||||
at org.h2.mvstore.db.Store.<init>(Store.java:133)
|
||||
at org.h2.engine.Database.<init>(Database.java:326)
|
||||
at org.h2.engine.Engine.openSession(Engine.java:92)
|
||||
at org.h2.engine.Engine.openSession(Engine.java:222)
|
||||
at org.h2.engine.Engine.createSession(Engine.java:201)
|
||||
at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:343)
|
||||
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:125)
|
||||
at org.h2.Driver.connect(Driver.java:59)
|
||||
at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
|
||||
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359)
|
||||
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201)
|
||||
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:470)
|
||||
at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561)
|
||||
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:100)
|
||||
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
|
||||
at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122)
|
||||
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:428)
|
||||
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.delegateWork(JdbcIsolationDelegate.java:61)
|
||||
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.getJdbcEnvironmentUsingJdbcMetadata(JdbcEnvironmentInitiator.java:276)
|
||||
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:107)
|
||||
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:68)
|
||||
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:130)
|
||||
at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263)
|
||||
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:238)
|
||||
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:215)
|
||||
at org.hibernate.boot.model.relational.Database.<init>(Database.java:45)
|
||||
at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.getDatabase(InFlightMetadataCollectorImpl.java:223)
|
||||
at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:191)
|
||||
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:170)
|
||||
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1432)
|
||||
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1503)
|
||||
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75)
|
||||
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:390)
|
||||
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409)
|
||||
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396)
|
||||
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:366)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1833)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1782)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326)
|
||||
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
|
||||
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1234)
|
||||
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:952)
|
||||
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624)
|
||||
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
|
||||
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
|
||||
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456)
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:334)
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354)
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343)
|
||||
at com.example.demo.DemoApplication.main(DemoApplication.java:38)
|
||||
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
|
||||
at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50)
|
||||
Caused by: org.h2.jdbc.JdbcSQLNonTransientException: Внутренняя ошибка: "org.h2.mvstore.MVStoreException: The file is locked: D:/html-prog/Semestr 2/repos/Internet_Programming_2/data.mv.db [2.2.224/7]"
|
||||
General error: "org.h2.mvstore.MVStoreException: The file is locked: D:/html-prog/Semestr 2/repos/Internet_Programming_2/data.mv.db [2.2.224/7]" [50000-224]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:566)
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:489)
|
||||
... 64 more
|
||||
Caused by: org.h2.mvstore.MVStoreException: The file is locked: D:/html-prog/Semestr 2/repos/Internet_Programming_2/data.mv.db [2.2.224/7]
|
||||
at org.h2.mvstore.DataUtils.newMVStoreException(DataUtils.java:996)
|
||||
at org.h2.mvstore.SingleFileStore.lockFileChannel(SingleFileStore.java:143)
|
||||
at org.h2.mvstore.SingleFileStore.open(SingleFileStore.java:117)
|
||||
at org.h2.mvstore.SingleFileStore.open(SingleFileStore.java:81)
|
||||
at org.h2.mvstore.MVStore.<init>(MVStore.java:286)
|
||||
... 58 more
|
||||
|
3
gradle/wrapper/gradle-wrapper.properties
vendored
3
gradle/wrapper/gradle-wrapper.properties
vendored
@ -5,3 +5,6 @@ networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
org.gradle.daemon=true
|
||||
org.gradle.parallel=true
|
||||
org.gradle.configureondemand=true
|
@ -0,0 +1,53 @@
|
||||
package com.example.demo.core.error;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.core.annotation.AnnotationUtils;
|
||||
import org.springframework.web.bind.annotation.ControllerAdvice;
|
||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
|
||||
@ControllerAdvice
|
||||
public class AdviceController {
|
||||
private final Logger log = LoggerFactory.getLogger(AdviceController.class);
|
||||
|
||||
private static Throwable getRootCause(Throwable throwable) {
|
||||
Throwable rootCause = throwable;
|
||||
while (rootCause.getCause() != null && rootCause.getCause() != rootCause) {
|
||||
rootCause = rootCause.getCause();
|
||||
}
|
||||
return rootCause;
|
||||
}
|
||||
|
||||
private static Map<String, Object> getAttributes(HttpServletRequest request, Throwable throwable) {
|
||||
final Throwable rootCause = getRootCause(throwable);
|
||||
final StackTraceElement firstError = rootCause.getStackTrace()[0];
|
||||
return Map.of(
|
||||
"message", rootCause.getMessage(),
|
||||
"url", request.getRequestURL(),
|
||||
"exception", rootCause.getClass().getName(),
|
||||
"file", firstError.getFileName(),
|
||||
"method", firstError.getMethodName(),
|
||||
"line", firstError.getLineNumber());
|
||||
}
|
||||
|
||||
@ExceptionHandler(value = Exception.class)
|
||||
public ModelAndView defaultErrorHandler(HttpServletRequest request, Throwable throwable) throws Throwable {
|
||||
if (AnnotationUtils.findAnnotation(throwable.getClass(),
|
||||
ResponseStatus.class) != null) {
|
||||
throw throwable;
|
||||
}
|
||||
|
||||
log.error("{}", throwable.getMessage());
|
||||
throwable.printStackTrace();
|
||||
final ModelAndView model = new ModelAndView();
|
||||
model.addAllObjects(getAttributes(request, throwable));
|
||||
model.setViewName("error");
|
||||
return model;
|
||||
}
|
||||
}
|
@ -1,26 +1,28 @@
|
||||
package com.example.demo.department.api;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.modelmapper.ModelMapper;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import com.example.demo.core.configuration.Constants;
|
||||
import com.example.demo.department.service.DepartmentService;
|
||||
import com.example.demo.department.model.DepartmentEntity;
|
||||
import com.example.demo.department.service.DepartmentService;
|
||||
|
||||
import jakarta.validation.Valid;
|
||||
|
||||
@RestController
|
||||
@RequestMapping(Constants.API_URL + "/departments")
|
||||
@Controller
|
||||
@RequestMapping(DepartmentController.URL)
|
||||
public class DepartmentController {
|
||||
public static final String URL = "/departments";
|
||||
private static final String DEPARTMENTS_VIEW = "departments";
|
||||
private static final String DEPARTMENTS_EDIT_VIEW = "department-edit";
|
||||
private static final String DEPARTMENTS_ATTRIBUTE = "departments";
|
||||
private final DepartmentService departmentService;
|
||||
private final ModelMapper modelMapper;
|
||||
|
||||
@ -38,27 +40,62 @@ public class DepartmentController {
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
public List<DepartmentDto> getAll() {
|
||||
return departmentService.getAll().stream().map(this::toDto).toList();
|
||||
public String getAll(Model model) {
|
||||
model.addAttribute(DEPARTMENTS_ATTRIBUTE,
|
||||
departmentService.getAll().stream().map(this::toDto).toList());
|
||||
return DEPARTMENTS_VIEW;
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
public DepartmentDto get(@PathVariable(name = "id") Long id) {
|
||||
return toDto(departmentService.get(id));
|
||||
@GetMapping("/edit/")
|
||||
public String create(
|
||||
Model model) {
|
||||
model.addAttribute(DEPARTMENTS_ATTRIBUTE, new DepartmentDto());
|
||||
return DEPARTMENTS_EDIT_VIEW;
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public DepartmentDto create(@RequestBody @Valid DepartmentDto dto) {
|
||||
return toDto(departmentService.create(toEntity(dto)));
|
||||
@PostMapping("/edit/")
|
||||
public String create(
|
||||
Model model,
|
||||
@ModelAttribute(name = DEPARTMENTS_ATTRIBUTE) @Valid DepartmentDto department,
|
||||
BindingResult bindingResult){
|
||||
if (bindingResult.hasErrors()) {
|
||||
return DEPARTMENTS_EDIT_VIEW;
|
||||
}
|
||||
departmentService.create(toEntity(department));
|
||||
return Constants.REDIRECT_VIEW + URL;
|
||||
}
|
||||
|
||||
@PutMapping("/{id}")
|
||||
public DepartmentDto update(@PathVariable(name = "id") Long id, @RequestBody DepartmentDto dto) {
|
||||
return toDto(departmentService.update(id, toEntity(dto)));
|
||||
@GetMapping("/edit/{id}")
|
||||
public String Update(
|
||||
@PathVariable(name = "id") Long id,
|
||||
Model model) {
|
||||
if (id <= 0){
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
model.addAttribute(DEPARTMENTS_ATTRIBUTE, toDto(departmentService.get(id)));
|
||||
return DEPARTMENTS_EDIT_VIEW;
|
||||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public DepartmentDto delete(@PathVariable(name = "id") Long id) {
|
||||
return toDto(departmentService.delete(id));
|
||||
@PostMapping("/edit/{id}")
|
||||
public String update(
|
||||
@PathVariable(name = "id") Long id,
|
||||
@ModelAttribute(name = DEPARTMENTS_ATTRIBUTE) @Valid DepartmentDto department,
|
||||
BindingResult bindingResult,
|
||||
Model model) {
|
||||
if (bindingResult.hasErrors()) {
|
||||
return DEPARTMENTS_EDIT_VIEW;
|
||||
}
|
||||
if (id <= 0) {
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
departmentService.update(id, toEntity(department));
|
||||
return Constants.REDIRECT_VIEW + URL;
|
||||
}
|
||||
|
||||
@PostMapping("/delete/{id}")
|
||||
public String delete(
|
||||
@PathVariable(name = "id") Long id){
|
||||
departmentService.delete(id);
|
||||
return Constants.REDIRECT_VIEW + URL;
|
||||
}
|
||||
}
|
||||
|
@ -78,7 +78,7 @@ public class DirectionsController {
|
||||
@GetMapping("/edit/")
|
||||
public String create(Model model,
|
||||
@RequestParam(name = PAGE_ATTRIBUTE, defaultValue = "0") int page) {
|
||||
model.addAttribute(DIRECTIONS_ATTRIBUTE, new DirectionsGroupedDto());
|
||||
model.addAttribute(DIRECTIONS_ATTRIBUTE, new DirectionsDto());
|
||||
model.addAttribute(DEPARTMENT_ATTRIBUTE, getDepartments());
|
||||
model.addAttribute(PAGE_ATTRIBUTE, page);
|
||||
return DIRECTIONS_EDIT_VIEW;
|
||||
|
@ -1,8 +1,11 @@
|
||||
package com.example.demo.entrysData.api;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.modelmapper.ModelMapper;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
@ -11,19 +14,25 @@ import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import com.example.demo.core.api.PageAttributesMapper;
|
||||
import com.example.demo.core.configuration.Constants;
|
||||
import com.example.demo.department.service.DepartmentService;
|
||||
import com.example.demo.entrysData.model.EntrysDataEntity;
|
||||
import com.example.demo.entrysData.model.EntrysDataGrouped;
|
||||
import com.example.demo.entrysData.model.EntrysDataGroupedDepartment;
|
||||
import com.example.demo.entrysData.service.EntrysDataService;
|
||||
|
||||
import jakarta.validation.Valid;
|
||||
|
||||
@RestController
|
||||
@RequestMapping(Constants.API_URL + "/entrysData")
|
||||
@Controller
|
||||
@RequestMapping(EntrysDataController.URL)
|
||||
public class EntrysDataController {
|
||||
public static final String URL = "/users";
|
||||
private static final String USERS_VIEW = "users";
|
||||
private static final String USERS_EDIT_VIEW = "user-edit";
|
||||
private static final String USERS_ATTRIBUTE = "users";
|
||||
private static final String PAGE_ATTRIBUTE = "page";
|
||||
private final EntrysDataService entrysDataService;
|
||||
private final ModelMapper modelMapper;
|
||||
private final DepartmentService departmentService;
|
||||
@ -39,10 +48,14 @@ public class EntrysDataController {
|
||||
return modelMapper.map(entity, EntrysDataDto.class);
|
||||
}
|
||||
|
||||
private EntrysDataGroupedDto toGroupedDto(EntrysDataGrouped entity) {
|
||||
private EntrysDataGroupedDto toDto(EntrysDataGrouped entity) {
|
||||
return modelMapper.map(entity, EntrysDataGroupedDto.class);
|
||||
}
|
||||
|
||||
private EntrysDataGroupedDepartmentDto toDto(EntrysDataGroupedDepartment entity){
|
||||
return modelMapper.map(entity, EntrysDataGroupedDepartmentDto.class);
|
||||
}
|
||||
|
||||
private EntrysDataEntity toEntity(EntrysDataDto dto) {
|
||||
final EntrysDataEntity entity = modelMapper.map(dto, EntrysDataEntity.class);
|
||||
entity.setDepartment(departmentService.get(dto.getDepartmentId()));
|
||||
@ -57,6 +70,19 @@ public class EntrysDataController {
|
||||
// return PageDtoMapper.toDto(entrysDataService.getAll(departmentId, page, size), this::toDto);
|
||||
// }
|
||||
|
||||
@GetMapping
|
||||
public String getAll(
|
||||
@RequestParam(name = "departmentId", defaultValue = "0") Long departmentId,
|
||||
@RequestParam(name = PAGE_ATTRIBUTE, defaultValue = "0") int page,
|
||||
Model model){
|
||||
final Map<String, Object> attributes = PageAttributesMapper.
|
||||
toAttributes(entrysDataService.getAllWithDepartment(page, Constants.DEFAULT_PAGE_SIZE),
|
||||
this::toDto);
|
||||
model.addAllAttributes(attributes);
|
||||
model.addAttribute(PAGE_ATTRIBUTE, page);
|
||||
return USERS_VIEW;
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
public EntrysDataDto get(@PathVariable(name = "id") Long id) {
|
||||
return toDto(entrysDataService.get(id));
|
||||
@ -86,6 +112,6 @@ public class EntrysDataController {
|
||||
|
||||
@GetMapping("/count")
|
||||
public List<EntrysDataGroupedDto> getCount() {
|
||||
return entrysDataService.getCount().stream().map(this::toGroupedDto).toList();
|
||||
return entrysDataService.getCount().stream().map(this::toDto).toList();
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,40 @@
|
||||
package com.example.demo.entrysData.api;
|
||||
|
||||
public class EntrysDataGroupedDepartmentDto {
|
||||
private String DepartmentName;
|
||||
private Long Id;
|
||||
private String Login;
|
||||
private String Role;
|
||||
|
||||
public Long getId(){
|
||||
return Id;
|
||||
}
|
||||
|
||||
public void setId(Long Id){
|
||||
this.Id = Id;
|
||||
}
|
||||
|
||||
public String getLogin(){
|
||||
return Login;
|
||||
}
|
||||
|
||||
public void setLogin(String Login){
|
||||
this.Login = Login;
|
||||
}
|
||||
|
||||
public String getRole(){
|
||||
return Role;
|
||||
}
|
||||
|
||||
public void setRole(String Role){
|
||||
this.Role = Role;
|
||||
}
|
||||
|
||||
public String getDepartmentName(){
|
||||
return DepartmentName;
|
||||
}
|
||||
|
||||
public void setDepartmentName(String DepartmentName){
|
||||
this.DepartmentName = DepartmentName;
|
||||
}
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package com.example.demo.entrysData.model;
|
||||
|
||||
public interface EntrysDataGroupedDepartment {
|
||||
Long getId();
|
||||
String getLogin();
|
||||
String getRole();
|
||||
String getDepartmentName();
|
||||
}
|
@ -11,6 +11,7 @@ import org.springframework.stereotype.Repository;
|
||||
|
||||
import com.example.demo.entrysData.model.EntrysDataEntity;
|
||||
import com.example.demo.entrysData.model.EntrysDataGrouped;
|
||||
import com.example.demo.entrysData.model.EntrysDataGroupedDepartment;
|
||||
|
||||
@Repository
|
||||
public interface EntrysDataRepository extends CrudRepository<EntrysDataEntity, Long> {
|
||||
@ -26,4 +27,8 @@ public interface EntrysDataRepository extends CrudRepository<EntrysDataEntity, L
|
||||
"FROM EntrysDataEntity e " +
|
||||
"GROUP BY departmentName ORDER BY count DESC")
|
||||
List<EntrysDataGrouped> getCountEntrysInDepartment();
|
||||
@Query("select e.department.name as departmentName, e.login as login, e.role as role, e.id as id " +
|
||||
"from EntrysDataEntity e " +
|
||||
"group by departmentName order by id desc")
|
||||
Page<EntrysDataGroupedDepartment> findAllWithDepartment(Pageable pageable);
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import com.example.demo.core.error.NotFoundException;
|
||||
import com.example.demo.entrysData.model.EntrysDataEntity;
|
||||
import com.example.demo.entrysData.model.EntrysDataGrouped;
|
||||
import com.example.demo.entrysData.model.EntrysDataGroupedDepartment;
|
||||
import com.example.demo.entrysData.repository.EntrysDataRepository;
|
||||
|
||||
@Service
|
||||
@ -104,4 +105,10 @@ public class EntrysDataService {
|
||||
public List<EntrysDataGrouped> getCount() {
|
||||
return repository.getCountEntrysInDepartment();
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Page<EntrysDataGroupedDepartment> getAllWithDepartment(int page, int size) {
|
||||
final Pageable pageRequest = PageRequest.of(page, size);
|
||||
return repository.findAllWithDepartment(pageRequest);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package com.example.demo.news.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.StreamSupport;
|
||||
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -55,7 +56,6 @@ public class NewsService {
|
||||
@Transactional
|
||||
public NewsEntity update(Long id, NewsEntity entity) {
|
||||
final NewsEntity existsEntity = get(id);
|
||||
checkName(entity.getName());
|
||||
existsEntity.setDate(entity.getDate());
|
||||
existsEntity.setName(entity.getName());
|
||||
existsEntity.setDescription(entity.getDescription());
|
||||
|
@ -30,9 +30,17 @@
|
||||
Новости
|
||||
</a>
|
||||
<a class="nav-link" href="/directions"
|
||||
th:classappend="${activeLink.startsWith('/news') ? 'active' : ''}">
|
||||
th:classappend="${activeLink.startsWith('/directions') ? 'active' : ''}">
|
||||
Направления
|
||||
</a>
|
||||
<a class="nav-link" href="/departments"
|
||||
th:classappend="${activeLink.startsWith('/departments') ? 'active' : ''}">
|
||||
Кафедры
|
||||
</a>
|
||||
<a class="nav-link" href="/users"
|
||||
th:classappend="${activeLink.startsWith('/users') ? 'active' : ''}">
|
||||
Пользователи
|
||||
</a>
|
||||
</ul>
|
||||
<ul class="navbar-nav">
|
||||
</ul>
|
||||
|
28
src/main/resources/templates/department-edit.html
Normal file
28
src/main/resources/templates/department-edit.html
Normal file
@ -0,0 +1,28 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{default}">
|
||||
|
||||
<head>
|
||||
<title>Редактировать кафедру</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main layout:fragment="content">
|
||||
<form action="#" th:action="@{/departments/edit/{id}(id=${departments.id})}" th:object="${departments}" method="post">
|
||||
<div class="mb-3">
|
||||
<label for="id" class="form-label">ID</label>
|
||||
<input type="text" th:value="*{id}" id="id" class="form-control" readonly disabled>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="name" class="form-label">Название</label>
|
||||
<input type="text" th:field="*{name}" id="name" class="form-control">
|
||||
<div th:if="${#fields.hasErrors('name')}" th:errors="*{name}" class="invalid-feedback"></div>
|
||||
</div>
|
||||
<div class="mb-3 d-flex flex-row">
|
||||
<button class="btn btn-primary me-2 button-fixed-width" type="submit">Сохранить</button>
|
||||
<a class="btn btn-secondary button-fixed-width" href="/departments">Отмена</a>
|
||||
</div>
|
||||
</form>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
53
src/main/resources/templates/departments.html
Normal file
53
src/main/resources/templates/departments.html
Normal file
@ -0,0 +1,53 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{default}">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Новости</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main class="text-center" layout:fragment="content">
|
||||
<span class="mainSt">
|
||||
<b>Кафедры</b>
|
||||
</span>
|
||||
<div>
|
||||
<a href="/departments/edit/" class="btn btn-danger">Добавить кафедру</a>
|
||||
</div>
|
||||
<table class="table">
|
||||
<caption></caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="w-10">ID</th>
|
||||
<th scope="col" class="w-auto">Название</th>
|
||||
<th scope="col" class="w-10"></th>
|
||||
<th scope="col" class="w-10"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr th:each="department : ${departments}">
|
||||
<th scope="row" th:text="${department.id}"></th>
|
||||
<td th:text="${department.name}"></td>
|
||||
<td>
|
||||
<form th:action="@{/departments/edit/{id}(id=${department.id})}" method="get">
|
||||
<button type="submit" class="btn btn-link button-link">
|
||||
<i class="fa fa-edit">Изменить</i>
|
||||
</button>
|
||||
</form>
|
||||
</td>
|
||||
<td>
|
||||
<form th:action="@{/departments/delete/{id}(id=${department.id})}" method="post">
|
||||
<button type="submit" class="btn btn-link button-link"
|
||||
onclick="return confirm('Вы уверены?')">
|
||||
<i class="fa fa-trash">Удалить</i>
|
||||
</button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
@ -7,7 +7,7 @@
|
||||
|
||||
<body>
|
||||
<main layout:fragment="content">
|
||||
<form action="#" th:action="@{/directions/edit/{id}(id=${directions.id})}" th:object="${directions}"
|
||||
<form action="#" th:action="@{/directions/edit/{id}(id=${directions.id},(page=${page}))}" th:object="${directions}"
|
||||
method="post">
|
||||
<div class="mb-3">
|
||||
<label for="id" class="form-label">ID</label>
|
||||
@ -44,7 +44,7 @@
|
||||
</div>
|
||||
<div class="mb-3 d-flex flex-row">
|
||||
<button class="btn btn-primary me-2 button-fixed-width" type="submit">Сохранить</button>
|
||||
<a class="btn btn-secondary button-fixed-width" href="/directions">Отмена</a>
|
||||
<a class="btn btn-secondary button-fixed-width" href="/directions(page=${page})">Отмена</a>
|
||||
</div>
|
||||
</form>
|
||||
</main>
|
||||
|
@ -12,7 +12,7 @@
|
||||
<label class="mainSt d-flex justify-content-center" for="direction">
|
||||
Направление</label>
|
||||
<div>
|
||||
<a href="/directions/edit/(page=${page})" class="btn btn-primary">Добавить направление</a>
|
||||
<a href="/directions/edit/(page=${page})" class="btn btn-danger">Добавить направление</a>
|
||||
</div>
|
||||
<table class="table">
|
||||
<caption></caption>
|
||||
|
37
src/main/resources/templates/error.html
Normal file
37
src/main/resources/templates/error.html
Normal file
@ -0,0 +1,37 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{default}">
|
||||
|
||||
<head>
|
||||
<title>Ошибка</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main layout:fragment="content">
|
||||
<ul class="list-group mb-2">
|
||||
<th:block th:if="${#strings.isEmpty(message)}">
|
||||
<li class="list-group-item">
|
||||
Неизвестная ошибка
|
||||
</li>
|
||||
</th:block>
|
||||
<th:block th:if="${not #strings.isEmpty(message)}">
|
||||
<li class="list-group-item">
|
||||
<strong>Ошибка:</strong> [[${message}]]
|
||||
</li>
|
||||
</th:block>
|
||||
<th:block th:if="${not #strings.isEmpty(url)}">
|
||||
<li class="list-group-item">
|
||||
<strong>Адрес:</strong> [[${url}]]
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<strong>Класс исключения:</strong> [[${exception}]]
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
[[${method}]] ([[${file}]]:[[${line}]])
|
||||
</li>
|
||||
</th:block>
|
||||
</ul>
|
||||
<a class="btn btn-primary button-fixed-width" href="/news">На главную</a>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
0
src/main/resources/templates/user-edit.html
Normal file
0
src/main/resources/templates/user-edit.html
Normal file
57
src/main/resources/templates/users.html
Normal file
57
src/main/resources/templates/users.html
Normal file
@ -0,0 +1,57 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{default}">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Пользователи</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main class="text-center" layout:fragment="content">
|
||||
<span class="mainSt">
|
||||
<b>Пользователи</b>
|
||||
</span>
|
||||
<div>
|
||||
<a href="/users/edit/" class="btn btn-danger">Добавить пользователя</a>
|
||||
</div>
|
||||
<table class="table">
|
||||
<caption></caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="w-5">ID</th>
|
||||
<th scope="col" class="w-10">Логин</th>
|
||||
<th scope="col" class="w-25">Роль</th>
|
||||
<th scope="col" class="w-50">Кафедра</th>
|
||||
<th scope="col" class="w-10"></th>
|
||||
<th scope="col" class="w-10"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr th:each="newItem : ${news}">
|
||||
<th scope="row" th:text="${newItem.id}"></th>
|
||||
<td th:text="${newItem.date}"></td>
|
||||
<td th:text="${newItem.name}"></td>
|
||||
<td th:text="${newItem.description}"></td>
|
||||
<td>
|
||||
<form th:action="@{/news/edit/{id}(id=${newItem.id})}" method="get">
|
||||
<button type="submit" class="btn btn-link button-link">
|
||||
<i class="fa fa-edit">Изменить</i>
|
||||
</button>
|
||||
</form>
|
||||
</td>
|
||||
<td>
|
||||
<form th:action="@{/news/delete/{id}(id=${newItem.id})}" method="post">
|
||||
<button type="submit" class="btn btn-link button-link"
|
||||
onclick="return confirm('Вы уверены?')">
|
||||
<i class="fa fa-trash">Удалить</i>
|
||||
</button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
57
src/main/resources/templates/usersGroup.html
Normal file
57
src/main/resources/templates/usersGroup.html
Normal file
@ -0,0 +1,57 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{default}">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Новости</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main class="text-center" layout:fragment="content">
|
||||
<span class="mainSt">
|
||||
<b>Новости</b>
|
||||
</span>
|
||||
<div>
|
||||
<a href="/news/edit/" class="btn btn-danger">Добавить новость</a>
|
||||
</div>
|
||||
<table class="table">
|
||||
<caption></caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="w-5">ID</th>
|
||||
<th scope="col" class="w-10">Дата публикации</th>
|
||||
<th scope="col" class="w-25">Заголовок</th>
|
||||
<th scope="col" class="w-50">Описание</th>
|
||||
<th scope="col" class="w-10"></th>
|
||||
<th scope="col" class="w-10"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr th:each="newItem : ${news}">
|
||||
<th scope="row" th:text="${newItem.id}"></th>
|
||||
<td th:text="${newItem.date}"></td>
|
||||
<td th:text="${newItem.name}"></td>
|
||||
<td th:text="${newItem.description}"></td>
|
||||
<td>
|
||||
<form th:action="@{/news/edit/{id}(id=${newItem.id})}" method="get">
|
||||
<button type="submit" class="btn btn-link button-link">
|
||||
<i class="fa fa-edit">Изменить</i>
|
||||
</button>
|
||||
</form>
|
||||
</td>
|
||||
<td>
|
||||
<form th:action="@{/news/delete/{id}(id=${newItem.id})}" method="post">
|
||||
<button type="submit" class="btn btn-link button-link"
|
||||
onclick="return confirm('Вы уверены?')">
|
||||
<i class="fa fa-trash">Удалить</i>
|
||||
</button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user