unp*_*pix 3 validation jsf jakarta-ee
<h:inputText id="myInputText"
title="The text from validation message here"
style="#{component.valid? '' : 'border-color:red'}"
validator="#{MyBean.validate}"
required="true"
requiredMessage="required"
value="#{MyBean.value} />
<p:message for="myInputText" display="text"/>
Run Code Online (Sandbox Code Playgroud)
由于我想在 inputText 组件中自定义查找失败的验证,并且我知道可以知道组件是否已成功验证,因此我想知道它是否可行以及如何获取验证消息,以便将其显示为我的 inputText 组件的标题。
您在计划中遇到的问题是单个组件可以有多个消息排队。那你打算怎么办?出于演示目的,您可以使用
<h:inputText id="myInputText"
title="#{facesContext.getMessageList('myInputText').get(0)}"
style="#{component.valid ? '' : 'border-color:red'}"
validator="#{MyBean.validate}"
required="true"
requiredMessage="required"
value="#{MyBean.value}" />
Run Code Online (Sandbox Code Playgroud)
编辑:您应该将逻辑移动到您的支持 bean 中:
实现一个从可用FacesMessage列表中提取细节的方法,给定一个clientId
public String getComponentMessageDetail(String clientId) {
String detail = null;
FacesContext ctxt = FacesContext.getCurrentInstance();
List<FacesMessage> componentMessages = ctxt.getMessages(clientId);
if (componentMessages != null && componentMessages.isEmpty() == false) {
//returns the detail, from only the first message!
detail = componentMessages.get(0).getDetail();
}
return detail;
}
Run Code Online (Sandbox Code Playgroud)在您的视图中使用实用程序方法
<h:inputText id="myInputText"
title="#{MyBean.getComponentMessageDetail('myInputText')}"
style="#{component.valid ? '' : 'border-color:red'}"
validator="#{MyBean.validate}"
required="true"
requiredMessage="required"
value="#{MyBean.value}" />
Run Code Online (Sandbox Code Playgroud)