RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-464679

Илья Гопак's questions

Martin Hope
Илья Гопак
Asked: 2022-08-14 00:37:55 +0000 UTC

表示在链接中,在特定的地方,会有数字

  • -1

在像这样的链接中:http://localhost:8080/api/departments/ЛЮБОЕ ЧИСЛО/edit?可以是任何数字

具体是多少我不知道。我以为我可以用正则表达式来写,但没有成功

//http://localhost:8080/api/departments/10/edit?

if (uri === `http://localhost:8080/api/departments/` + /\d/ + `/edit?`) {
        return new EditDepartmentPage();
    }

if - 返回假。是否可以用正则表达式或其他方式编写它?

我用纯js写

javascript регулярные-выражения
  • 1 个回答
  • 16 Views
Martin Hope
Илья Гопак
Asked: 2022-08-01 23:28:45 +0000 UTC

如何正确使用 RestController?

  • 0

我提前为一个可能愚蠢的问题道歉,但是:

我有@Controller我正在重做的@RestController+ js。

这是其中一种方法:

@GetMapping
    public ModelAndView showAll() {
        ModelAndView mav = new ModelAndView("/departments");
        List<DepartmentDto> departmentDtos = departmentService.findAll();

        if (departmentDtos.isEmpty()) {
            mav.setViewName("redirect:/api/departments/new");
        } else {
            mav.addObject("departmentDtos", departmentDtos);
        }
        return mav;
    }

据我了解,控制器应如下所示:

@GetMapping
public ResponseEntity<List<DepartmentDto>> showAll() {
    List<DepartmentDto> departmentDtos = departmentService.findAll();
    return new ResponseEntity<>(departmentDtos, HttpStatus.OK);
}

在 JS 中,我返回这个对象,然后做我自己的逻辑。如果列表为空,我会重定向到另一个页面,等等。这是正确的?

附加问题:

  • 方法RestController只返回一个对象?如果不是 - 如何返回 2 个或更多(例如,两个列表)?(我认为选项 c ModelAndView 不正确)

  • 如果您使用RestController- 重定向和转发的所有逻辑 - 将其留给 js 会更好吗?

  • 是否可以返回视图(jsp/html 等)

java spring
  • 2 个回答
  • 61 Views
Martin Hope
Илья Гопак
Asked: 2022-07-25 19:26:23 +0000 UTC

如何在没有 Spring Boot 的情况下通过 application.properties 启用/禁用类设置

  • 0

我为 Http 请求编写了自己的日志记录类并将其用于@ControllerAdvice

public class HttpLogger {
    public static void logging(Object handlerClass,
                               HttpServletRequest req,
                               HttpServletResponse resp,
                               Exception e) {
        Log.logger.info("{} catch and try to resolve exception;" +
                "\nException message: {};" +
                "\nException class: {};" +
                "\nTime creating exception: {};", handlerClass.getClass(), e.getMessage(), e.getClass(), ZonedDateTime.now(ZoneId.of("Z")));
        Log.logger.info("HTTP Method - {}" +
                "\nHTTP Status - {}" +
                "\nRequestURI {}", req.getMethod(), resp.getStatus(), req.getRequestURI());
    }
}

我不使用 SpringBoot,但我想做以下事情:在application.properties添加 httpLogger.enabled=true. 当值为真时 - 发生日志记录,false- 分别为否。

一个想法浮现在脑海:

  1. 扫描application.properties
  2. 找到您的设置httpLogger.enabled
  3. 取决于要记录的值。

该方法将具有 +- 像这样

if(enabled){
    //логировать
} else {
    //ничего не делать
}

实际上是问题本身:我知道这将正常工作,但也许有一些更优雅的解决方案?我不想重新发明轮子。

我也考虑过 BeanPostProcessor,通过 MBean 控制一切。

spring логирование
  • 1 个回答
  • 37 Views
Martin Hope
Илья Гопак
Asked: 2022-07-17 01:14:12 +0000 UTC

@Valid验证失败后如何在jsp中获取实体

  • 0

我正在使用@Valid 注释。如果我理解正确的话,那么这个注解应该不仅要验证实体并填写BindingResult,还要自动将实体放入jsp模型中。所以。如何在 jsp 中获取“employeeDto”对象?

@PostMapping
public ModelAndView create(@Valid @ModelAttribute("employeeDto") EmployeeDto employeeDto,
                           BindingResult bindingResult) {

    ModelAndView mav = new ModelAndView("/action/employee/add_employee");
    //business logic

    if (bindingResult.hasErrors()) {
        mav.addObject("entity", employeeDto); //Как избавиться от этой строчки?
        return mav;
    }

    //business logic
    return mav;
}

例如,要获取错误,我使用以下代码:

<spring:hasBindErrors name="employeeDto">
    <s:set scope="page" var="errors" value="${errors}"/>
</spring:hasBindErrors>

但是如何获得employeeDto?

spring-mvc jsp
  • 1 个回答
  • 10 Views
Martin Hope
Илья Гопак
Asked: 2022-07-06 00:01:55 +0000 UTC

Spring中如何提升测试数据库(测试时)

  • 0

我为我的应用程序编写测试。我正在使用测试数据库。

遇到一个问题:

Error creating bean with name 'jpaDepartmentDaoImpl': Injection of persistence dependencies failed;
nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException:   
No qualifying bean of type 'javax.persistence.EntityManagerFactory' available: 
expected single matching bean but found 2: testLocalContainerEntityManagerFactoryBean,localContainerEntityManagerFactoryBean

我知道 Spring 发誓它无法理解要替换哪个 bean,但是我怎么能告诉它使用我的测试配置进行测试,以及正常使用,通常的呢?

错误位置: 在此处输入图像描述

在此处输入图像描述

DispatcherServletInitTest

package com.aimprosoft.hopak.util.config.dispatcher;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.TestOnly;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.filter.HiddenHttpMethodFilter;
import org.springframework.web.servlet.DispatcherServlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletRegistration;

@TestOnly
@Configuration
@ComponentScan("com.aimprosoft.hopak")
public class DispatcherServletInitTest implements WebApplicationInitializer {

    @Override
    public void onStartup(@NotNull ServletContext servletContext) {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.scan("com.aimprosoft.hopak");
        ctx.setServletContext(servletContext);
        servletContext.addListener(new ContextLoaderListener(ctx));
        ServletRegistration.Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx));
        servlet.addMapping("/");
        servlet.setLoadOnStartup(1);
        
        registerHiddenFieldFilter(servletContext);
    }
    private void registerHiddenFieldFilter(ServletContext aContext) {
        aContext.addFilter("hiddenHttpMethodFilter",
                new HiddenHttpMethodFilter()).addMappingForUrlPatterns(null ,true, "/*");
    }
}

JpaConfigTest 包 com.aimprosoft.hopak.util.config;

import org.jetbrains.annotations.TestOnly;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.test.context.TestPropertySource;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import javax.persistence.EntityManagerFactory;
import java.util.Properties;

@TestOnly
@Configuration
@TestPropertySource("classpath:testDataBase.properties")
@EnableTransactionManagement
@ComponentScan("com.aimprosoft.hopak")
public class JpaConfigTest {

    @Value("${spring.datasource.url}")
    private String url;
    @Value("${spring.datasource.password}")
    private String password;
    @Value("${spring.datasource.username}")
    private String username;
    @Value("${spring.datasource.driver-class-name}")
    private String driverClassName;
    @Value("${spring.datasource.database-platform}")
    private String databasePlatform;

    private final Properties prop = new Properties();

    {
        prop.setProperty("hibernate.show_sql", "true");
        prop.setProperty("hibernate.format_sql", "true");
    }

    @Bean
    public DriverManagerDataSource testDriverManagerDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }

    @Bean
    public LocalContainerEntityManagerFactoryBean testLocalContainerEntityManagerFactoryBean() {
        LocalContainerEntityManagerFactoryBean localContainer = new LocalContainerEntityManagerFactoryBean();
        localContainer.setDataSource(testDriverManagerDataSource());
        localContainer.setPackagesToScan("com.aimprosoft.hopak");
        localContainer.setJpaVendorAdapter(testHibernateJpaVendorAdapter());
        localContainer.setJpaProperties(prop);
        return localContainer;
    }

    @Bean
    public HibernateJpaVendorAdapter testHibernateJpaVendorAdapter() {
        HibernateJpaVendorAdapter hibernateJpaVendorAdapter = new HibernateJpaVendorAdapter();
        hibernateJpaVendorAdapter.setDatabasePlatform(databasePlatform);
        return hibernateJpaVendorAdapter;
    }

    @Bean
    public PlatformTransactionManager testTransactionManager(@Qualifier("testLocalContainerEntityManagerFactoryBean") EntityManagerFactory entityManagerFactory) {
        return new JpaTransactionManager(entityManagerFactory);
    }
}

WebApplicationContextConfigTest

package com.aimprosoft.hopak.util.config;

import net.sf.oval.Validator;
import net.sf.oval.configuration.annotation.AnnotationsConfigurer;
import net.sf.oval.guard.GuardInterceptor;
import net.sf.oval.integration.spring.SpringCheckInitializationListener;
import net.sf.oval.integration.spring.SpringValidator;
import org.jetbrains.annotations.TestOnly;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@TestOnly
@Configuration
@EnableWebMvc
@ComponentScan("com.aimprosoft.hopak")
public class WebApplicationContextConfigTest implements WebMvcConfigurer {

    @Bean
    public InternalResourceViewResolver templateResolver() {
        InternalResourceViewResolver templateResolver = new InternalResourceViewResolver();
        templateResolver.setPrefix("/view");
        templateResolver.setSuffix(".jsp");
        return templateResolver;
    }

    @Bean
    public SpringValidator validator() {
        AnnotationsConfigurer springConfig = new AnnotationsConfigurer();
        springConfig.addCheckInitializationListener(SpringCheckInitializationListener.INSTANCE);
        Validator validator = new Validator(springConfig);
        return new SpringValidator(validator);
    }

    @Bean
    public GuardInterceptor guardInterceptor() {
        return new GuardInterceptor();
    }

}
spring
  • 1 个回答
  • 27 Views
Martin Hope
Илья Гопак
Asked: 2022-06-16 03:54:34 +0000 UTC

我是否正确理解 @Transactional(readOnly = true)

  • 1

如果我们的方法标有@Transactional(readOnly = true) 注释,那么我们不能在其中(以及在它调用的那些方法中)使用CREAT、UPDATE、DELETE 操作。但是有了退出方法后的数据本身,我们还能做些什么呢?这是正确的?

hibernate jpa
  • 1 个回答
  • 86 Views
Martin Hope
Илья Гопак
Asked: 2022-09-06 06:18:08 +0000 UTC

EntityManagerFactory 未初始化

  • -1

我没有使用 EJB/Spring 等。

只有 Jpa + Servlet。

我正在尝试初始化

public abstract class AbstractEntityManagerFactory {

    private static final EntityManagerFactory emf = Persistence.createEntityManagerFactory("HibernateTask");

    public static EntityManager getEntityManager(){
        return emf.createEntityManager();
    }

当我运行它时public static void main(String[] args)- 一切都很好。

但是如果我使用 Tom Cat 9.0.58 - 我会收到一个错误:

05-Apr-2022 22:58:58.985 INFO [http-nio-8080-exec-4] org.hibernate.service.internal.AbstractServiceRegistryImpl.stopService HHH000369: Error stopping service [class org.hibernate.hikaricp.internal.HikariCPConnectionProvider]
        java.lang.NullPointerException: Cannot invoke "com.zaxxer.hikari.HikariDataSource.close()" because "this.hds" is null
            at org.hibernate.hikaricp.internal.HikariCPConnectionProvider.stop(HikariCPConnectionProvider.java:122)
            at org.hibernate.service.internal.AbstractServiceRegistryImpl.stopService(AbstractServiceRegistryImpl.java:390)
            at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.cleanup(EntityManagerFactoryBuilderImpl.java:1449)
            at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1508)
            at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:56)
            at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79)
            at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
            at com.aimprosoft.hopak.factory.AbstractEntityManagerFactory.<clinit>(AbstractEntityManagerFactory.java:9)

持久性.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
             xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
             http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

    <persistence-unit name="HibernateTask">
        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
            <property name="hibernate.hikari.jdbcUrl" value="jdbc:mysql://localhost:3306/Departments"/>
            <property name="hibernate.hikari.username" value="root"/>
            <property name="hibernate.hikari.password" value="ISBN97859910"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>

            <property name="hibernate.connection.provider_class" value="org.hibernate.hikaricp.internal.HikariCPConnectionProvider"/>
            <property name="hibernate.hikari.connectionTimeout" value="20000"/>
            <property name="hibernate.hikari.idleTimeout" value="150000"/>
            <property name="hibernate.hikari.maximumPoolSize" value="10"/>
            <property name="hibernate.hikari.poolName" value="HikariPool"/>

            <property name="hibernate.hikari.autoCommit" value="true"/>
            <property name="hibernate.hikari.maxLifetime" value="90000"/>

        </properties>
    </persistence-unit>

</persistence>

我认为这与一些特殊的 EntityManagerFactory 声明有关。

我有一个纯 jdbc 实现。如果我先对其进行查询。然后在魔术的帮助下,一切都会初始化。

目前我在页面上有 2 个按钮。

部门 - (JDBC) 员工 - (JPA)

如果我立即点击 Employee(JPA) - 我得到NullPointerException,但如果首先点击 Department(JDBC),然后点击 Employee(JPA) - 一切都像时钟一样工作。

也许静态初始化有问题?

称呼

public class JpaTransactionManager {

    public static <T> T doInTransaction(JpaTransactionCallback<T> callback) {

        EntityManager em = AbstractEntityManagerFactory.getEntityManager(); // Попытка инициализации
        T result = null;

        em.getTransaction().begin();
        result = callback.execute(em);
        em.getTransaction().commit();

        Log.logger.info("Transaction is done");
        em.close();
        return result;
    }
}

pom.xml

<dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>${slf4j.version}</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.6.7.Final</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.6.7.Final</version>
        </dependency>

        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <version>5.0.1</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-hikaricp</artifactId>
            <version>5.6.7.Final</version>
        </dependency>

    </dependencies>
java
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5