小编Ily*_*ich的帖子

SonarQube 抱怨使用带有通配符的 ResponseEntity

我使用 SpringBoot 进行 REST Web 服务开发,使用 SonarQube 进行静态分析。

我的应用程序中有一些端点,如下所示:

@PostMapping
ResponseEntity<?> addSomething(@RequestBody Some object) {
    // some code there
    return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
Run Code Online (Sandbox Code Playgroud)

SonarQube 抱怨使用带有通配符的 ResponseEntity,向我报告了一个严重问题“通用通配符类型不应在返回参数中使用”

我想知道是否应该在 SonarQube 中禁用此验证,或者为这些情况提供不同的返回类型。

你怎么看待这件事?

spring-mvc spring-boot sonarqube

9
推荐指数
2
解决办法
1万
查看次数

源和目标的Maven编译器插件jdk版本

我在pom.xml中为maven-compiler-plugin配置了以下配置.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

什么应该是jdk的源和目标版本?它取决于我的电脑上安装的jdk的版本?愿他们与众不同吗?例如,安装的jdk为1.8,源参数为1.6,目标为1.7.

java pom.xml maven

8
推荐指数
1
解决办法
1万
查看次数

使用JSP中的资源包属性进行国际化,非拉丁文本成为Mojibake

我有以下index.jsp:

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<fmt:setLocale value="ru_RU"/>
<fmt:setBundle basename="messages"/>
<html>
  <head>
    <title></title>
  </head>
  <body>
  <h1><fmt:message key="login"/></h1>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

和属性文件messages_ru_RU.properties:

login = ?????
Run Code Online (Sandbox Code Playgroud)

问题是我在输出中得到了垃圾unicode字符:

Ëîãèí
Run Code Online (Sandbox Code Playgroud)

更新

将.properies文件编码更改为UTF-8.最新产品:Ðогин

请帮助我,将其更改为正常的西里尔字母.

属性文件: messages_ru_RU.properties

java jsp jstl utf-8 internationalization

6
推荐指数
1
解决办法
1909
查看次数

JPA在select中获得上一个和下一个记录

我有一个JPQL查询,它从数据库中检索实体的排序列表.我有其中一个实体的id.如何在我的选择中使用已知ID获取记录的上一条和下一条记录?

select distinct n from News n 
    inner join n.author a 
    inner join n.tags t 
    where a.id = :authorId and t.id in :tagsId 
    order by size(n.comments) desc
Run Code Online (Sandbox Code Playgroud)

新闻有一位作者,许多标签和评论.我用给定的作者和标签选择新闻,并根据评论的次数对它们进行排序.

使用JDBC时,我已经解决了这些问题rownum.

我可以使用JPA获得结果中记录的位置(rownum)吗?如果我知道记录的位置,我可以将第一个结果定义到该位置 - 1,并且对于给定查询,最大结果为3.这就是我如何得到以前,当前和下一个新闻.

除了遍历新闻列表之外,还有其他解决方案吗?

java database jpa jpql

5
推荐指数
1
解决办法
756
查看次数

Slick 3 java.time.LocalDate映射

我使用的是Slick 3.1.0,需要保留java.time.LocalDate类型的字段.

我有模特课:

case class Position(companyName: String, title: String, startDate: Option[LocalDate], endDate: Option[LocalDate], positionId: Option[Int] = None)
Run Code Online (Sandbox Code Playgroud)

以下映射:

private[PositionTable] class PositionTable(tag: Tag) extends Table[Position](tag, "POSITIONS")  {
    val positionId = column[Int]("POSITION_ID", O.PrimaryKey, O.AutoInc)
    val companyName = column[String]("COMPANY_NAME")
    val title = column[String]("TITLE")
    val startDate = column[Date]("START_DATE")
    val endDate = column[Date]("END_DATE")
    def * = (companyName, title, startDate, endDate, positionId.?) <>(Position.tupled, Position.unapply)
}
Run Code Online (Sandbox Code Playgroud)

如何将startDate和endDate字段映射到数据库中以DATE类型表示?

列映射器中的NullPointerException的Stacktrace:

java.lang.NullPointerException
    at com.tiedin.repo.PositionTable$class.$init$(PositionRepository.scala:54)
    at repo.PositionRepositoryTest.<init>(PositionRepositoryTest.scala:13)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at java.lang.Class.newInstance(Class.java:442)
    at org.scalatest.tools.Runner$.genSuiteConfig(Runner.scala:1422)
    at …
Run Code Online (Sandbox Code Playgroud)

java scala date slick slick-3.0

5
推荐指数
1
解决办法
2617
查看次数

在 Spring Controller 中使用 ResponseEntity&lt;?&gt; 返回类型而不是简单的 ResponseEntity 的原因是什么?

我已经看到很多 Spring Controllers 实现的例子,它们用于ResponseEntity<?>返回具有特定状态代码和可选主体的 HTTP 响应。

ResponseEntity<?>即使在像下面这样的官方 Spring 教程中也存在表示法:Building REST services with Spring

使用ResponseEntity<?>而不是 simple的原因是什么ResponseEntity

这与我之前的问题有点相关:SonarQube 抱怨使用带有通配符的 ResponseEntity

什么是原始类型中有一些解释,为什么我们不应该使用它?线程,但我想更多地关注 ResponseEntity 类,它在 Spring 控制器中的使用。

考虑下面的代码片段,其中somethingService返回OptionalSomething类:

@GetMapping
ResponseEntity<?> getSomething() {
    return somethingService.getSomething()
               .map(smth -> new ResponseEntity<>(smth, HttpStatus.OK))        
               .orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND));
}
Run Code Online (Sandbox Code Playgroud)

是否有任何理由要离开一个通配符,即使我没有因为得到编译器检查任何利润ResponseEntity(HttpStatus status)parametrisesResponseEntityObject课吗?

spring spring-mvc spring-boot sonarqube

5
推荐指数
0
解决办法
4442
查看次数

怎么把List &lt;Mono &lt;T &gt;&gt;转换成Mono &lt;List &lt;T &gt;&gt;?

我有一个返回的方法Mono<Output>

interface Processor {
  Mono<Output> process(Input input);
}
Run Code Online (Sandbox Code Playgroud)

我想对processor集合执行此方法:

List<Input> inputs = // get inputs
Processor processor = // get processor
List<Mono<Output>> outputs = inputs.stream().map(supplier::supply).collect(toList());
Run Code Online (Sandbox Code Playgroud)

但是List<Mono<Output>>我想得到的不是Mono<List<Output>>汇总,而是包含汇总的结果。

我尝试过reduce,但最终结果看起来很笨拙:

Mono<List<Output>> result = inputs.stream().map(processor::process)
    .reduce(Mono.just(new ArrayList<>()),
        (monoListOfOutput, monoOfOutput) ->
            monoListOfOutput.flatMap(list -> monoOfOutput.map(output -> {
              list.add(output);
              return list;
            })),
        (left, right) ->
            left.flatMap(leftList -> right.map(rightList -> {
              leftList.addAll(rightList);
              return leftList;
            })));
Run Code Online (Sandbox Code Playgroud)

我可以用更少的代码来实现吗?

java reactor project-reactor

0
推荐指数
2
解决办法
2206
查看次数