Jsf 2 如何使用默认选择选项显示所需的h:SelectOne功能表信息?

Jsf 2 如何使用默认选择选项显示所需的h:SelectOne功能表信息?,jsf-2,Jsf 2,我在selectOneMenu中遇到了一个问题。我需要在下拉列表中显示项目列表,它是必填字段 在该下拉列表中,第一个值是“选择”。如果用户没有选择任何问题,那么我需要显示一条错误消息,如“选择任何问题” 有人能给我解决方案吗?只需将第一个项目的项目值设置为null。不应使用标签的值设置它 例如 您还可以创建验证程序 (一) 3) 将验证器添加到faces-config.xml <validator> <validator-id>selectOneMenuVa

我在selectOneMenu中遇到了一个问题。我需要在下拉列表中显示项目列表,它是必填字段

在该下拉列表中,第一个值是“选择”。如果用户没有选择任何问题,那么我需要显示一条错误消息,如“选择任何问题”


有人能给我解决方案吗?

只需将第一个项目的项目值设置为
null
。不应使用标签的值设置它

例如


您还可以创建验证程序

(一)

3) 将验证器添加到faces-config.xml

<validator>  
     <validator-id>selectOneMenuValidator</validator-id>  
     <validator-class>net.roseindia.validations.SelectOneMenuValidator</validator-class>  
 </validator> 

selectOneMenuValidator
net.roseindia.validations.SelectOneMenuValidator

提醒一句:就学习Java EE而言,Roseindia.net是世界上最差的资源。请将该站点添加到您的黑名单中。在这种情况下,Roseindia.net文章的作者显然不知道如何使用
required/requiredMessage
属性。另外,上下文中的
context.addMessage()
部分完全是胡说八道。这一切对JSF初学者来说都是非常误导的,他们后来不择手段地抱怨JSF“太混乱、太难、太糟糕了”,而那些“说教”的资源才是糟糕的。请得到一本体面的书/资源/教程。我认为用BeNa.问题=“请……”更好,因为在逻辑服务器中不会随着视图的改变而改变。使用if(!question.equals(“请…”){do…}
<h:selectOneMenu id="giftValue" value="#{yourController.giftDO.giftValue}">
    <f:selectItems value="#{yourController.giftDO.giftValueMap}" />
            <f:validator validatorId="selectOneMenuValidator"/>
    </h:selectOneMenu> 
    <h:message for="giftValue" errorStyle="color:red"/>
    //where giftValue enum willcontail the word "Select"
public class SelectOneMenuValidator implements Validator {
    /* (non-Javadoc)
     * @see javax.faces.validator.Validator#validate(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.Object)
     */

    public void validate(FacesContext context, UIComponent arg1, Object value)
            throws ValidatorException {

         String giftValue = (String)value;

         if(giftValue != null && giftValue.toUpperCase().equals("SELECT")){ 
             FacesMessage message = new FacesMessage();  
             message.setSeverity(FacesMessage.SEVERITY_ERROR);  
             message.setSummary("Please Select a question!");  
             message.setDetail("Please Select a question!");              
             context.addMessage("Please Select a question!", message);      
             throw new ValidatorException(message); 
         }

    }
}
<validator>  
     <validator-id>selectOneMenuValidator</validator-id>  
     <validator-class>net.roseindia.validations.SelectOneMenuValidator</validator-class>  
 </validator>