小编Mau*_*ice的帖子

我可以将@Requestparam注释用于Post请求吗?

我有这个控制器方法:

@PostMapping(
        value = "/createleave",
        params = {"start","end","hours","username"})
public void createLeave(@RequestParam(value = "start") String start,
                        @RequestParam(value = "end") String end,
                        @RequestParam(value = "hours") String hours,
                        @RequestParam(value = "username") String username){
    System.out.println("Entering createLeave " + start + " " + end + " " + hours + " " + username);
    LeaveQuery newLeaveQuery = new LeaveQuery();
    Account account = accountRepository.findByUsername(username);
    newLeaveQuery.setAccount(account);
    newLeaveQuery.setStartDate(new Date(Long.parseLong(start)));
    newLeaveQuery.setEndDate(new Date(Long.parseLong(end)));
    newLeaveQuery.setTotalHours(Integer.parseInt(hours));
    leaveQueryRepository.save(newLeaveQuery);
}
Run Code Online (Sandbox Code Playgroud)

但是,当我向此端点发送帖子请求时,我得到以下信息

"{"timestamp":1511444885321,"status":400,"error":"Bad Request","exception":"org.springframework.web.bind.UnsatisfiedServletRequestParameterException","message":"Parameter conditions \"start, end, hours, username\" not met for actual request …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc spring-web

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

为什么lambda表达式可以用作比较器?

在" OCP学习指南 "一书中,有一个关于可以用两种方式初始化的比较器的示例.第一个是通过这样的匿名类:

Comparator<Duck> byWeight = new Comparator<Duck>(){
    public int compare(Duck d1, Duck d2){
        return d1.getWeight() - d2.getWeight();
    }
};
Run Code Online (Sandbox Code Playgroud)

这个我能理解.根据这本书,这可以用这样的lambda表达式替换:

Comparator<Duck> byWeight = (d1,d2) -> d1.getWeight() - d2.getWeight();
Run Code Online (Sandbox Code Playgroud)

现在这个我不明白.lambda表达式不返回Comparator对象,由于Comparator是一个接口,因此我现在无法想到它.

那么new第一个例子中的运算符是否引用了正在创建的匿名类,它被称为Comparator,因为匿名类实现了Comparator接口?

那么在例2中到底发生了什么?是否以lambda表达式创建了某个对象?在这个例子中,你byWeight用作参考变量吧?

我真的不明白这一点,有人可以解释一下吗?谢谢.

java lambda anonymous-inner-class comparator java-8

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

Stream reduce()要求究竟需要什么?

reduce()在并行流上使用该操作时,OCP考试书指出reduce()参数必须遵守某些原则.这些论点如下:

  1. 必须定义标识,使得对于流u中的所有元素,combiner.apply(identity,u)等于u.
  2. 累加器运算符op必须是关联的和无状态的,(a op b) op c等于a op (b op c).
  3. 组合器运算符还必须是关联的和无状态的并且与标识兼容,以便对于所有ut combiner.apply(u, accumulator.apply(identity, t))等于accumulator.apply(u,t).

考试书提供了两个例子来说明这些原则,请参阅下面的代码:

关联的示例:

System.out.println(Arrays,asList(1,2,3,4,5,6))
.parallelStream()
.reduce(0,(a,b) -> (a-b))); //NOT AN ASSOCIATIVE ACCUMULATOR
Run Code Online (Sandbox Code Playgroud)

OCP书中对此有何说法:

它可能会输出-21,3或其他一些值,因为累加器函数违反了associativity属性.

身份要求的示例:

System.out.println(Arrays.asList("w","o","l","f"))
.parallelStream()
.reduce("X", String::concat));
Run Code Online (Sandbox Code Playgroud)

OCP书中对此有何说法:

如果我们使用的身份参数不是真正的身份值,您可以看到其他问题.它可以输出XwXoXlXf.作为并行过程的一部分,标识将应用于流中的多个元素,从而导致非常意外的数据.

我不明白这些例子.使用累加器示例,累加器以0 -1 = -1然后-1 -2开始,其中= -3然后-6等等一直到-21.我明白,因为生成的arraylist不同步,结果可能是不可预测的,因为竞争条件等的可能性,但为什么累加器不关联?Woulden也不会(a+b)导致不可预测的结果?我真的没有看到示例中使用的累加器有什么问题,以及为什么它不是关联的,但是我仍然不能完全理解关联原则是什么.

我也不了解身份的例子.据我所知,如果4个独立的线程同时开始与身份一起累积,那么结果确实可能是XwXoXlXf,但这与身份参数本身有什么关系呢?究竟什么是适当的身份才能使用呢?

我想知道是否有人可以更多地了解这些原则.

谢谢

java parallel-processing reduce java-8 java-stream

8
推荐指数
3
解决办法
747
查看次数

有没有办法从角度2中的字符串中删除html标签?

我正在使用富文本编辑器组件primeng.这个编辑器将我键入的所有内容都转换为html.但有时我想用纯文本输出这些文本.angular 2是否提供了一种从文本中轻松删除html标签的方法?

谢谢.

primeng angular angular5 angular6

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

有状态和无状态lambda表达式之间有什么区别?

根据OCP的书,人们必须避免有状态的操作,否则称为有状态的lambda表达.本书中提供的定义是"有状态的lambda表达式,其结果取决于在执行管道期间可能发生变化的任何状态."

它们提供了一个示例,其中使用并行流将固定的数字集合添加到使用该.map()函数的同步ArrayList中.

arraylist中的顺序是完全随机的,这应该让人看到有状态的lambda表达式在运行时产生不可预测的结果.这就是为什么强烈建议在使用并行流时避免有状态操作以消除任何潜在的数据副作用.

它们没有显示无状态lambda表达式,它提供了解决同一问题的方法(向同步的arraylist添加数字),我仍然不知道使用map函数用数据填充空的同步arraylist的问题. ..在执行管道期间可能发生变化的状态究竟是什么?他们指的是Arraylist本身吗?就像当另一个线程决定在并行流仍处于添加数字并因此改变最终结果的过程中时将其他数据添加到ArrayList时?

也许有人可以为我提供一个更好的例子来说明有状态的lambda表达式是什么以及为什么要避免它.非常感谢.

谢谢

java parallel-processing lambda java-stream

7
推荐指数
2
解决办法
3195
查看次数

我可以在 @Embeddable pojo 上使用 @CreationTimestamp 吗?

我可以在 @Embeddable pojo 上使用 @CreationTimestamp 吗?我注意到添加这个类后日期仍然为空:

@Embeddable
Run Code Online (Sandbox Code Playgroud)

公共类 LaborPeriodChange 实现了 Serializable {

//@PrePersist

@Temporal(TemporalType.TIMESTAMP)
@Column(updatable = false)
@CreationTimestamp
private Date dateChanged;
Run Code Online (Sandbox Code Playgroud)

到 LaborPeriod 中的元素集合。

@ElementCollection
@CollectionTable(name="laborPeriod_change", joinColumns=@JoinColumn(name="FK_LaborPeriod"))
@Column(name="laborPeriod_change")
@JsonIgnore
private List<LaborPeriodChange> laborPeriodChanges = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

那么@CreationTimestamp 只能用于@Entity pojo 吗?

java hibernate

6
推荐指数
0
解决办法
263
查看次数

如何在<mat-select>组件中实现自动完成?

我想将自动完成功能与多选择mat-select选择器结合起来,因为选项列表会很长.

我已经在stackoverflow上搜索了答案,最接近答案的是这个实现了角度材料的<mat-select>组件的搜索过滤器

然而,这些示例是关于表而不是mat-select.

我的问题是,是否可以将自动完成功能添加到mat-select.如果没有,我可以自动完成包含列表中每个项目前面的复选框吗?

谢谢

编辑:我发现angular的primefaces有一个多选列表,允许你搜索listitems.它还包括一个内置的全选按钮!你可以在这里找到它https://www.primefaces.org/primeng/#/multiselect

你可以安装primefaces npm install primeng --save

angular-material angular-material2 angular

6
推荐指数
2
解决办法
9459
查看次数

angulars HttpParams对象的set和append方法有什么区别?

的方法说明append

使用给定参数名的附加值构造一个新主体。

而对于该方法的描述set就是

为给定的参数名构造一个具有值的新主体。

但是,append您也可以为参数名称设置新值。这两种方法都会在不存在该参数的情况下创建该参数,因此我想知道为什么有两种方法几乎可以完成相同的事情,以及何时应使用一种代替另一种方法。

谢谢

javascript http angular

6
推荐指数
2
解决办法
2005
查看次数

Subject类的isStopped和close属性有什么区别?

该类Subject具有2个属性closedisStopped。我知道close可以用来检查Subject仍然可以订阅,但是究竟应该isStopped使用什么呢?

我问这个问题是因为我试图找到一种方法来知道BehaviourSubject的下一个操作何时完成。我可以使用isStopped还是将其用于其他用途?

rxjs

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

如何防止 Spring Boot Web 应用程序在启动时接受 http 请求?

我有一个带有角度前端的 Spring Boot Web 应用程序。当我在 Web 应用程序仍在启动时使用 Angular 应用程序发送请求时,Web 应用程序可能会接受该请求并尝试处理它。我相信应用程序能够在WebSecurityConfigurerAdapter扩展类初始化后接收请求。

当其余类尚未完全初始化时,这会导致问题。例如,当我尝试注销在 Web 应用程序启动时仍然登录的用户时,可能会导致 SQLException,因为它还找不到数据库表user

@SpringBootApplication在最终类(用 注释的类)初始化之前,如何防止应用程序接受请求?

spring spring-mvc spring-boot

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