我认为这可能会在其他地方得到解答,但在其他帖子的背景下却迷失了方向。所以,决定在这里重申一下。如果有人知道这已在其他地方得到解答,请指出我的方向。所以,我的问题。
现在我正在寻找的一些细节。我已经做了一些关于JSR-303的阅读,我一般都遵循注释的工作原理。我的问题是我可以动态更改约束值吗?以下面的例子为例:
public class Foo {
@Min(value = 18, message = "Age must be greater than or equal to 18")
@Max(value = 150, message = "Age must be less than or equal to 150")
int fooAge;
}
那么,有没有办法使用规范在运行时提供年龄限制。因此,我们可以说,出于某种原因,我需要min为20,max为100.在另一种情况下,我需要10和50等等。
提前感谢您帮我解决此问题。
答案 0 :(得分:1)
303是Bean Validation 1.0的JSR。 349是Bean Validation 1.1的JSR。
项目的主页说:" Hibernate Validator 5.x是参考实现Bean Validation 1.1!"
JSR定义了规范。 Hibernate验证器是本规范的参考实现。
是的,您可以通过将约束分配给验证组来实现,并根据用例激活一个或另一个组。请参阅http://beanvalidation.org/1.0/spec/#validationapi-validatorapi-groups
答案 1 :(得分:1)
就问题而言:
如果Hibernate Validator是规范的参考impl,是否还有其他规范?
还有JSR-303的apache实现 - > http://bval.apache.org/。 不幸的是,最新发布的版本Apache BVal(0.5)不支持Bean Validation 1.1 。它应该在版本中引入:Apache BVal(1.1.0)。现在有一个alpa-snapshot版本:
public SongCell(ListView<Song> list, Playlist playlist) {
setAlignment(Pos.CENTER_LEFT);
ContextMenu listContextMenu = new ContextMenu();
MenuItem removeItem = new MenuItem("Remove");
MenuItem editID3Item = new MenuItem("Edit ID3");
MenuItem playNextItem = new MenuItem("Play Next");
removeItem.setOnAction((ActionEvent event) -> {
list.getItems().remove(getIndex());
});
editID3Item.setOnAction((ActionEvent event) -> {
Optional<Pair<String, String>> show = new FXID3Edit(getItem()).show();
});
playNextItem.setOnAction((ActionEvent event) -> {
Song song = getItem();
list.getItems().remove(song);
playlist.addSongRequest(new SongRequest(song, SongRequest.type.NEXT));
});
listContextMenu.getItems().add(removeItem);
listContextMenu.getItems().add(playNextItem);
listContextMenu.getItems().add(editID3Item);
setOnMousePressed(event -> {
if (event.getButton().equals(MouseButton.SECONDARY)) {
if (getItem() != null) {
if (getItem().equals(playlist.getSong())) {
playNextItem.setDisable(true);
removeItem.setDisable(true);
} else {
playNextItem.setDisable(false);
removeItem.setDisable(false);
}
listContextMenu.show(list, event.getScreenX(), event.getScreenY());
}
}
if (event.getButton().equals(MouseButton.PRIMARY) && event.getClickCount() == 2) {
playlist.setIndex(this.getIndex());
playlist.play();
}
event.consume();
});
}
@Override
protected void updateItem(Song item, boolean empty) {
super.updateItem(item, empty);
if (!empty && item != null) {
this.setText(item.toString());
} else {
this.setText("");
}
}
有关以下内容的更多信息:http://cxf.apache.org/docs/validationfeature.html