- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在对象验证和消息自定义方面遇到问题。我有一个类 - 一个人。每个人都有一个名字。该字段使用内置约束 - @NotNull
及其消息 - 'Name is required' 进行注释。现在我还有另一门课——票务。在这个类中,有 Person 类型的字段。第一个称为 contact,第二个称为 technicalContact,两者都用 @Valid
进行注释。接下来我有一个 Controller ,它有一个接受 Ticket 实例的方法。该方法变量用@Valid
注释。因此,当调用该方法并且联系人或技术联系人姓名为空时,我们会遇到约束违规。但在这两种情况下,它都是相同的消息。
我想区分这些违规行为 - 例如,当联系人姓名为空时,“联系人 - 姓名为必填”;当技术联系人姓名为空时,“技术契约(Contract)人员 - 姓名为必填”。如果 Controller 方法和类以呈现方式注释,是否可以以某种方式自定义此消息?
消息在资源文件中定义,在约束级别我们指定消息键。如果约束有某种附加变量,也许可以以某种方式“更改”资源键?
我们使用 Spring (4.3.19),我们使用 Jersey (2.28) 实现 REST Web 服务,服务器在 Jetty 上运行,validation-api (2.0.1)。
这是我的第一篇文章,对于任何错误,我深感抱歉,我愿意接受任何提示,如果需要,我可以重新表述问题。
package pl.example;
import javax.validation.constraints.NotNull;
public class Person {
@NotNull(message = "{validation.constraints.name.notNull}")
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package pl.example;
import javax.validation.Valid;
public class Ticket {
@Valid
private Person contact;
@Valid
private Person technicalContact;
public Person getContact() {
return contact;
}
public void setContact(Person contact) {
this.contact = contact;
}
public Person getTechnicalContact() {
return technicalContact;
}
public void setTechnicalContact(Person technicalContact) {
this.technicalContact = technicalContact;
}
}
package pl.example;
import javax.validation.Valid;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import org.springframework.stereotype.Component;
@Component
@Path("/v1/tickets")
public class TicketResource {
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response create(@Valid Ticket ticket)
{
return Response.status(Status.CREATED).entity(ticket).build();
}
}
最佳答案
在阅读有关 Spring 验证的内容时,我发现了以下链接,其中包含一些有用的信息( https://www.logicbig.com/tutorials/spring-framework/spring-core/error-codes.html )。 Spring 使用 JSR-303 Bean 验证规范来解决错误和错误消息。我从对象图中生成错误代码的组合,并尝试从 .properties 文件中查找错误代码。解决问题所需要做的就是为每个错误代码声明一条消息,并从 @NotNull 注释中删除“message”参数。在您的 .properties 文件中,单独包含
的条目NotNull.ticket.contact.name = contact name must not be empty
NotNull.ticket.technicalContact.name = Technical contact name must not be empty
为了更清楚地了解错误代码,下面列出了 spring 针对问题中指定的复杂对象自动生成的所有错误代码。
"NotNull.ticket.technicalContact.name",
"NotNull.technicalContact.name",
"NotNull.name",
"NotNull.java.lang.String",
"NotNull"
关于java - 验证、内置约束。我有一种方法可以根据注释字段确切代表的内容来更改注释字段的消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57163190/
通过多次搜索和pytorch文档本身,我可以发现在嵌入层内部有一个查找表,用于存储嵌入向量。我无法理解的是: 在这一层的培训期间究竟发生了什么? 权重是多少,以及这些权重的梯度是如何计算的? 我的直觉
当应用程序有大量数据(400M)要写入非阻塞套接字时,write() 返回EWOULDBLOCK 或EAGAIN 当发送缓冲区变满时。 当套接字被(e)轮询时,我有时会看到发送缓冲区中有 7M 空间(
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我经常阅读一些编程语言对模块的支持(“一流”)(OCaml,Scala,TypeScript [?]),并且最近偶然发现了这样的答案,即在Scala的显着特征中引用模块作为一流公民。 我以为我很清楚模
我已经提交了一个自定义的开放图表故事,但它被拒绝并显示以下消息: 打开图表捐赠(行动类型)提交内容、操作、对象和使用说明必须以英文提交。您可以在应用程序面板的“本地化”选项卡中翻译操作和对象。 如果我
给定一个任意的 boolean 值列表,确定其中一个恰好为真的最优雅的方法是什么? 最明显的 hack 是类型转换:将 false 转换为 0,将 true 转换为 1,然后对它们求和,并返回 sum
这个问题在这里已经有了答案: When to use extern "C" in simple words? [duplicate] (7 个答案) 关闭 9 年前。 如果您想将此问题标记为重复问题
我是一名优秀的程序员,十分优秀!