小编Fil*_*zka的帖子

MethodValidationInterceptor和@Validated @ModelAttribute

我有一个Spring Boot 2应用程序,我希望能够使用Hibernate验证程序来验证控制器参数-我正在成功使用它。我将所有控制器都注释为,@Validated并且正在使用请求参数的验证(@PathVariable @AssertUuid final String customerId到目前为止),到目前为止一切正常。

但是,我还希望能够@ModelAttribute从表单进行验证。

@Controller
@PreAuthorize("hasRole('ADMIN')")
@RequestMapping(path = "/customers")
@Validated
public class CustomerController
{

    private final CustomerFacade customerFacade;

    public CustomerController(
        final CustomerFacade customerFacade
    )
    {
        this.customerFacade = customerFacade;
    }

    @GetMapping("/create")
    public ModelAndView create(
        final AccessToken accessToken
    )
    {
        return new ModelAndView("customer/create")
            .addObject("customer", new CreateCustomerRequest());
    }

    @PostMapping("/create")
    public ModelAndView handleCreate(
        final AccessToken accessToken,
        @Validated @ModelAttribute("customer") final CreateCustomerRequest customerValues,
        final BindingResult validation
    ) throws 
        UserDoesNotHaveAdminAccessException
    {
        if (validation.hasErrors()) {
            return new ModelAndView("customer/create") …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc hibernate-validator spring-boot

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

警告 [路径] 坏路径元素“.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.2/jakarta.xml.bind-api-2.3.2.jar”:没有这样的文件或目录

我决定是时候从 Java 8 升级到 Java 11。所以我阅读了一些教程并在我们的构建中进行了更改。

我想升级到

openjdk version "11.0.4" 2019-07-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.4+11)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.4+11, mixed mode)
Run Code Online (Sandbox Code Playgroud)

目前我正在使用

openjdk version "1.8.0_222"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_222-b10)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.222-b10, mixed mode)
Run Code Online (Sandbox Code Playgroud)

我也有

Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-24T20:41:47+02:00)
Maven home: /usr/lib/maven/3.6.0
Java version: 11.0.4, vendor: AdoptOpenJDK, runtime: /usr/lib/jvm/java-11.0.4.11-adoptopenjdk
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.15.0-55-generic", arch: "amd64", family: "unix"
Run Code Online (Sandbox Code Playgroud)

看起来一切正常,但编译时出现警告,因为 error_prone_core

[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) …
Run Code Online (Sandbox Code Playgroud)

java maven spring-boot

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

重新调整前后的Git diff分支忽略了master中的更改

自从我上次查看它以来,我希望能够看到分支中的更改,但是忽略了同时发生的master更改。

     F - G       H - I
    /           /
A - B - C - D - E
Run Code Online (Sandbox Code Playgroud)

我有两个提交范围c3af8fc5..7ccc4b49(由表示B - G)和4dfdabdd..301a443c(由表示E - I)。


想象一下,您正在为您的同事进行代码审查,签出他在local上的分支,您HEAD现在指向G。您进行代码审查,然后继续其他工作。

经过一段时间,新提交出现在大师(CDE)和你的同事已经解决了从您的评论的意见。他压扁的更改提交FG,因为他改名方法介绍F和固定它的用法G。他还根据Master调整了分支,以确保一切正常。

现在,您想再次进行代码审查,但是您懒于再次对整个分支进行代码审查,因此您只想查看上次更改的内容。您仍然有从本地获取的旧裁判。你是做什么?

您可以执行类似的操作git-diff G I,但这也可以向您显示master的更改,这些更改根本无济于事。

您也可以将旧的refs放在当前的master上,然后进行比较。这可能会有所帮助,但也可能存在很多冲突,这可能会使再次审查整个分支变得更加容易。


我试过差异补丁

diff <(git-diff c3af8fc5...7ccc4b49) <(git-diff 4dfdabdd...301a443c)
Run Code Online (Sandbox Code Playgroud)

它可以帮助我将注意力转移到某个地方,但这很粗糙。

您知道解决这个问题的更好,更原生的方法吗?谢谢。


编辑:我刚刚发现了interdiff,这使得比较两个diff更好

interdiff <(git-diff -U100 c3af8fc5...7ccc4b49) <(git-diff -U100 4dfdabdd...301a443c)  | colordiff
Run Code Online (Sandbox Code Playgroud)

但是仍然缺少git可能提供的上下文-所以...还有什么更好的吗?

git diff

4
推荐指数
1
解决办法
1236
查看次数

标签 统计

java ×2

spring-boot ×2

diff ×1

git ×1

hibernate-validator ×1

maven ×1

spring ×1

spring-mvc ×1