Jsf Primefaces选择列表';必需的';验证失败
我有一个选择列表,它要求每次使用Jsf Primefaces选择列表';必需的';验证失败,jsf,primefaces,Jsf,Primefaces,我有一个选择列表,它要求每次使用required时都提供一个值,并且我正在使用requiredMessage在未输入值时显示一条消息。但它们都不适用于我的选择列表,如下所示: <p:pickList value="#{parameterValueDialog.selectedModelSeries}" var="item" itemValue="#{item}" required="true" converter="pickListConve
required
时都提供一个值,并且我正在使用requiredMessage
在未输入值时显示一条消息。但它们都不适用于我的选择列表,如下所示:
<p:pickList value="#{parameterValueDialog.selectedModelSeries}"
var="item" itemValue="#{item}" required="true"
converter="pickListConverter" requiredMessage="#{msg.validation_message}">
}您可以通过在选择列表中提供验证程序方法来解决问题 在我的情况下,我的目标列表包含成员名称,我必须确保该列表至少包含一个成员,并且第一个成员具有特殊状态。首先,您必须将pickList返回的对象转换为DualListModel,并着手处理目标列表。然后,您可以检查它是否为空,并执行任何其他需要的验证。以下是我的验证器方法:
public void valideLocationsResponsables(FacesContext contexte, UIComponent composant, Object locationResps) throws ValidatorException {
DualListModel<LocationsResponsables> dualListModel;
if (locationResps instanceof DualListModel) {
dualListModel = (DualListModel<LocationsResponsables>) locationResps;
List<LocationsResponsables> listeResponsables = dualListModel.getTarget();
ListIterator<LocationsResponsables> iterateur = listeResponsables.listIterator();
// Your validation criteria here
if (listeResponsables.isEmpty() || !iterateur.next().getIdMembreReserv().getStatut().isPeutReserver()) {
((UIInput) composant).setValid(false); // Pick list is made invalid
FacesMessage msgErreur = new FacesMessage();
msgErreur.setSeverity(FacesMessage.SEVERITY_ERROR);
msgErreur.setDetail("Your error message here");
throw new ValidatorException(msgErreur);
}
}
}
public void validLocationResponsables(FacesContext contexte、UIComponent component、Object locationResps)引发ValidatorException异常{
双列表模型双列表模型;
if(DualListModel的locationResps实例){
dualListModel=(dualListModel)位置响应;
List ListResponseTables=dualListModel.getTarget();
ListIterator iterateur=ListResponsables.ListIterator();
//这里是您的验证标准
if(listResponsables.isEmpty()| |!iterateur.next().getIdMembreReserv().getStatut().ispeuteReserver()){
((UIInput)composant).setValid(false);//拾取列表无效
FacesMessage msgErreur=新的FacesMessage();
msgErreur.setSeverity(FacesMessage.SEVERITY_错误);
msgErreur.setDetail(“此处为您的错误消息”);
抛出新的ValidatorException(msgErreur);
}
}
}
validator方法通过validator关键字连接到pickList中,如下所示:
<p:pickList id="listeResp" value="#{locationsControleur.locationsResponsablesListe}" var="resp" effect="puff"
itemValue="#{resp}" itemLabel="#{resp.idMembreReserv.prenomNom}"
converter="#{locationsResponsablesListeConvertisseur}"
validator="#{locationsControleur.valideLocationsResponsables}">
<f:facet name="sourceCaption">#{msgs.LocationsMembresEligibles}</f:facet>
<f:facet name="targetCaption">#{msgs.LocationsResponsablesChoisis}</f:facet>
</p:pickList>
<p/><p/>
<h:message id="listeRespMsg" for="listeResp" errorStyle="color: red"/>
#{msgs.locationsmemberseligibles}
#{msgs.LocationsResponsablesChoisis}
希望这能有所帮助。显示转换器的
getAsObject()
。问题可能是由那里引起的。对于空字符串值,它可能错误地返回了非空值。@BalusC-包含的代码。
<p:pickList id="listeResp" value="#{locationsControleur.locationsResponsablesListe}" var="resp" effect="puff"
itemValue="#{resp}" itemLabel="#{resp.idMembreReserv.prenomNom}"
converter="#{locationsResponsablesListeConvertisseur}"
validator="#{locationsControleur.valideLocationsResponsables}">
<f:facet name="sourceCaption">#{msgs.LocationsMembresEligibles}</f:facet>
<f:facet name="targetCaption">#{msgs.LocationsResponsablesChoisis}</f:facet>
</p:pickList>
<p/><p/>
<h:message id="listeRespMsg" for="listeResp" errorStyle="color: red"/>