javax验证不适用于方法参数。这是测试代码,并且javax验证均不适用于方法参数。
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, params = "action=testAction")
public Test update(
@Size(min = 1) @RequestBody List<String> ids,
@Min(3) @PathVariable String name) {
return doSomething(ids, name);
}
Run Code Online (Sandbox Code Playgroud)
但是我有很好的类级别验证...
@RequestMapping(method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public RoleType create (@RequestBody @Validated(FieldType.class) User user) {
...
}
Run Code Online (Sandbox Code Playgroud)
和
@Size(min = 2, max = 10, groups = { FieldType.class }, message = "Invalid user code")
public String getId() {
return _id ;
}
Run Code Online (Sandbox Code Playgroud)
-解决方案-
按照接受的答案执行所有步骤。另一个附加功能是在课堂上添加注释
@Validated
class UserController
{
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, …Run Code Online (Sandbox Code Playgroud) 在Java 8中,如何定义函数以适合varargs.
我们有这样的功能:
private String doSomethingWithArray(String... a){
//// do something
return "";
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因,我需要使用Java 8函数调用它(因为'andThen'可以与其他函数一起使用.)
因此我想定义下面给出的东西.
Function<String... , String> doWork = a-> doSomethingWithArray(a) ;
Run Code Online (Sandbox Code Playgroud)
这给了我编译错误.以下工作,但输入现在必须是一个数组,不能是一个单独的字符串.
Function<String[] , String> doWork = a-> doSomethingWithArray(a) ;
Run Code Online (Sandbox Code Playgroud)
这里我提到了String,但它可以是任何Object的数组.
有没有办法使用varargs(...)而不是array([])作为输入参数?
或者,如果我创建一个类似于Function的新界面,是否可以创建类似下面的内容?
@FunctionalInterface
interface MyFunction<T... , R> {
//..
}
Run Code Online (Sandbox Code Playgroud) 我正在使用 spring 批处理,并且通常使用我有 reader、processor 和 writer。
我有2个问题
1> Reader 查询所有 200 条记录(表中的总记录大小为 200 并且我给出了 pagesize=200 ),因此它获得了所有 200 条记录,并且在处理器中我们想要所有这些记录的列表,因为我们必须将每条记录与其他 199 条记录将它们分组在不同的层中。因此,我在想,如果我们可以在处理步骤中获得该列表,我可以操纵它们。我应该如何处理。
2> 在处理阶段,我需要从数据库中获取一些主数据,这取决于将处理所有输入记录。我正在考虑在处理 bean 中注入数据源并获取所有主表数据并处理所有记录。这是好的方法还是请提出其他建议。
<job id="sampleJob">
<step id="step1">
<tasklet>
<chunk reader="itemReader" processor="processor" writer="itemWriter" commit-interval="20"/>
</tasklet>
</step>
</job>
Run Code Online (Sandbox Code Playgroud)
处理器是
@Override
public User process(Object item) throws Exception {
// transform item to user
return user;
}
Run Code Online (Sandbox Code Playgroud)
我想要类似的东西
public List<User> process(List<Object> item) throws Exception {
// transform item to user
return user;
}
Run Code Online (Sandbox Code Playgroud)
我在这里找到了一些帖子,但他们说要在 writer 中获取列表。但我不喜欢在 writer 中处理任何内容,因为这会破坏作者和处理器的定义。是否有任何配置可以获取此进程方法中的列表。
谢谢