gpt4 book ai didi

java - 为什么 selectOneMenu 组件 (JSF 2) 不显示验证消息?

转载 作者:行者123 更新时间:2023-12-02 00:41:30 25 4
gpt4 key购买 nike

我使用此类从输入字段进行验证:

@ManagedBean
@RequestScoped
public class UserInputValidation {

public void validateCity(FacesContext context, UIComponent validate,
Object value) {
String inputFromField = (String) value;

if (inputFromField.equals("") || inputFromField.equals(" ")) {
FacesMessage msg = new FacesMessage("Odaberite grad");
throw new ValidatorException(msg);
}
}
//...
}

这是保存输入值的托管 bean:

@ManagedBean
@RequestScoped
public class InputController {

//Attributes
private String city;
//Get set methods

为什么当我创建 selectOneComponent 并选择第一个组件(空白输入)时,不显示验证消息?

<h:selectOneMenu id="city" value="#{inputController .city}">                
<f:selectItems value="#{searchController.formatedCities()}" validator="#{userInputValidation.validateCity}"/>
</h:selectOneMenu>
<span style="color: red;"><b><h:message for="city"
showDetail="true" /></b></span>

selectOneMenu 中的第一个字段是空白(formatedCitiesMethod() 返回一个“”作为第一个元素),那么为什么如果在选择空白的情况下单击表单提交按钮,则不会显示验证消息?

最佳答案

validator属性必须位于 <h:selectOneMenu> 中,不在 <f:selectItems>

话说回来,你为什么不直接使用 required="true" ?为什么 validator 是 @ManagedBean而不是@FacesValidator

关于java - 为什么 selectOneMenu 组件 (JSF 2) 不显示验证消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6242418/

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