JHipster:jhi-alert-error 元素和服务器端表单验证?
JHipster: jhi-alert-error element and server side form validation?
我正在使用 JHipster 3.3。在生成的 "entity"-dialog.html 中,我注意到标签 jhi-alert-error 元素将显示服务器验证错误,例如,如果指定的字段是必填的在实体 JPA 中 class 喜欢
@NotNull
private String name;
如果该字段的值为空,则在单击提交按钮后将返回该字段的错误消息。
所以问题:
jhi-alert-error是如何实现的?我似乎看不到它的实现
我尝试调整 JPA 注释以使字段唯一但是这次如果我破坏唯一性则 jhi-alert-error 中不会显示任何错误消息通过添加 2 条具有相同字段值的记录来进行约束,
例如
// 注意下面'unique=true'
@NotNull
@Column(name = "name", unique=true)
private String name;
或
@Table(name="Module", uniqueConstraints = @UniqueConstraint(columnNames = "Name"))
public Class Module implements Serializable { ...
那么我将如何实现我自己的服务器端表单验证,以便在字段的唯一约束被打破后 jhi-alert-error 中显示错误消息单击提交按钮?
提前致谢,
我使用的是稍旧版本的 jhipster (2.26),因此代码中可能存在一些差异。要回答您的第一个问题,jhi-alert-error 是自定义 Angular 指令,请查看 alert.directive.js 文件和 jhAlertError 指令(应出现在 jhAlert 指令之后)。该指令期望 httpResponse.data 对象是 ErrorDTO 服务器端对象。
要添加自定义错误消息,您需要 return 一个 ErrorDTO 对象,指令将显示该消息。为此,您需要抛出异常并确保 spring AOP - ExceptionTranslator 配置为捕获它。如果你不想创建新的自定义异常,你可以使用 CustomParameterizedException:
@RequestMapping(value = "/pizzas",
method = RequestMethod.POST,
produces = MediaType.APPLICATION_JSON_VALUE)
@Timed
public ResponseEntity<Pizza> create(@RequestBody Pizza pizza) throws URISyntaxException {
if(pizza.isDisgusting()){
throw new CustomParameterizedException("Sorry, your pizza recipe is horrible");
}
log.debug("REST request to save Pizza : {}", pizza);
if (pizza.getId() != null) {
return ResponseEntity.badRequest().header("Failure", "A new pizza cannot already have an ID").body(null);
}
Pizza result = pizzaRepository.save(pizza);
return ResponseEntity.created(new URI("/api/pizzas/" + pizza.getId())).body(result);
}
我正在使用 JHipster 3.3。在生成的 "entity"-dialog.html 中,我注意到标签 jhi-alert-error 元素将显示服务器验证错误,例如,如果指定的字段是必填的在实体 JPA 中 class 喜欢
@NotNull
private String name;
如果该字段的值为空,则在单击提交按钮后将返回该字段的错误消息。
所以问题:
jhi-alert-error是如何实现的?我似乎看不到它的实现
我尝试调整 JPA 注释以使字段唯一但是这次如果我破坏唯一性则 jhi-alert-error 中不会显示任何错误消息通过添加 2 条具有相同字段值的记录来进行约束, 例如
// 注意下面'unique=true'
@NotNull @Column(name = "name", unique=true)
private String name;或
@Table(name="Module", uniqueConstraints = @UniqueConstraint(columnNames = "Name")) public Class Module implements Serializable { ...
那么我将如何实现我自己的服务器端表单验证,以便在字段的唯一约束被打破后 jhi-alert-error 中显示错误消息单击提交按钮?
提前致谢,
我使用的是稍旧版本的 jhipster (2.26),因此代码中可能存在一些差异。要回答您的第一个问题,jhi-alert-error 是自定义 Angular 指令,请查看 alert.directive.js 文件和 jhAlertError 指令(应出现在 jhAlert 指令之后)。该指令期望 httpResponse.data 对象是 ErrorDTO 服务器端对象。
要添加自定义错误消息,您需要 return 一个 ErrorDTO 对象,指令将显示该消息。为此,您需要抛出异常并确保 spring AOP - ExceptionTranslator 配置为捕获它。如果你不想创建新的自定义异常,你可以使用 CustomParameterizedException:
@RequestMapping(value = "/pizzas",
method = RequestMethod.POST,
produces = MediaType.APPLICATION_JSON_VALUE)
@Timed
public ResponseEntity<Pizza> create(@RequestBody Pizza pizza) throws URISyntaxException {
if(pizza.isDisgusting()){
throw new CustomParameterizedException("Sorry, your pizza recipe is horrible");
}
log.debug("REST request to save Pizza : {}", pizza);
if (pizza.getId() != null) {
return ResponseEntity.badRequest().header("Failure", "A new pizza cannot already have an ID").body(null);
}
Pizza result = pizzaRepository.save(pizza);
return ResponseEntity.created(new URI("/api/pizzas/" + pizza.getId())).body(result);
}