gpt4 book ai didi

jsf - 如何验证外键条目是否存在?

转载 作者:行者123 更新时间:2023-12-04 19:37:25 24 4
gpt4 key购买 nike

我的 Customer 表中有外键。

@JoinColumn(name = "DISCOUNT_CODE", referencedColumnName = "DISCOUNT_CODE")
@ManyToOne(optional = false)
private DiscountCode discountCode;

我有一个表单,其中包含此表的所有字段(包括外键 discountCode 及其来自另一个表的描述)。

我希望能够在用户输入外键表中不存在的输入时显示该外键不存在的消息。当我对这个字段进行模糊处理时,我将从表中检索它的描述。用户onblur 无效字段,表中不存在,如何显示无效字段的错误信息?

最佳答案

您需要的是一个验证器。它应该看起来像这样:

@ManagedBean
@RequestScoped
public class DiscountCodeValidator implements Validator {
@EJB
private MrBean mrBean;

@Override
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
String discountCode = (String) value;

if (!mrBean.checkDiscountCodeExistence(discountCode)) {
throw new ValidatorException(new FacesMessage("This code is not valid!"));
}
}
}

在您的 .xhtml 文件中,您可以如下声明此验证器:

<h:inputText id="discountCode" value="#{someBean.discountCode}" 
validator="#{discountCodeValidator}"
required="true" requiredMessage="Discount code is required.">
<f:ajax event="blur" render="discountMsg" />
</h:inputText>
<h:message for="discountCode" id="discountMsg"/>

需要注意的一件事是我假设您将注入(inject)一个 EJB 以使用 checkDiscountCodeExistence() 函数检查折扣代码是否存在。因此,我将上述验证器注释为 @ManagedBean。如果您不需要注入(inject)任何 EJB,您可以使用 @FacesValidator 注释 Validator。

关于jsf - 如何验证外键条目是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8629550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com