gpt4 book ai didi

validation - 抛出验证程序异常时显示错误详细信息

转载 作者:行者123 更新时间:2023-12-04 03:06:30 24 4
gpt4 key购买 nike

我在托管 bean 中有代码:

public void setTestProp(String newProp) {
FacesMessage yourFailure = new FacesMessage();
yourFailure.setDetail("Really you need to promise to never do that again!");
yourFailure.setSummary("Stop here, now!");
yourFailure.setSeverity(FacesMessage.SEVERITY_FATAL);
throw new ValidatorException(yourFailure);
}

在 XPage 中:

<xp:messages id="messages1" layout="table" showSummary="false"
showDetail="true" globalOnly="false">
</xp:messages>

但我得到了结果消息(正如预期的那样在黄色框中很好地显示,而不是在错误页面中):

在类型为 com.ibm.sg.demo.Test 的 bean 中设置属性“testProp”时出错:javax.faces.validator.ValidatorException:现在停止!

我愿意:

  • 没有技术部分
  • 查看摘要

我错过了什么?

最佳答案

问题是属性解析器从托管 bean 的 get/set 方法捕获所有 java.lang.Throwable。 “原始”facesMessage 被替换为新的(附加上一条消息)。

你有三种可能:

  1. 创建您自己的属性解析器
  2. 创建您自己的验证器并将其附加到绑定(bind)到托管 bean 的字段
  3. 为您的 bean 添加验证方法

希望对你有帮助

斯文

编辑:

如何向您的 bean 添加验证方法

a) 为你的 bean 添加一个验证方法

public void validate(FacesContext context, UIComponent toValidate,  Object value){

// Do your validation with value
// if everything is ok, exit method

// if not, flag component invalid...
((UIInput)toValidate).setValid(false);

// ... create your message ...
FacesMessage yourFailure = new FacesMessage();
yourFailure.setDetail("Really you need to promise to never do that again!");
yourFailure.setSummary("Stop here, now!");
yourFailure.setSeverity(FacesMessage.SEVERITY_FATAL);

context.addMessage(toValidate.getClientId(context), yourFailure);
}

b) 将你的验证器添加到字段中

<xp:inputText id="inputText1"
value="#{TBean.test}"
validator="#{TBean.validate}">

(您可以随意命名该方法。)

此验证器添加到 faces-config.xml 中。

关于validation - 抛出验证程序异常时显示错误详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11116525/

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