JSF错误消息示例教程
时间:2020-02-23 14:33:43 来源:igfitidea点击:
在本节中,我们将看到如何使用默认的JSF验证器向用户发出内置的错误消息。
在编写xhtml文件之前,需要记住以下几点:
h:message标签用于显示与UI组件相关的所有错误消息。
这个h:message
具有以下属性
id属性是ui组件的唯一标识符。
样式显示样式信息,例如颜色,字体等
for属性描述适用于表单的组件名称。
让我们通过一个示例详细显示如何显示错误消息
创建一个名为error.xhtml
的JSF页面,如下所示:
error.xhtml
<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="https://www.w3.org/1999/xhtml" xmlns:h="https://java.sun.com/jsf/html" xmlns:c="https://java.sun.com/jsf/core"> <h:head> <title>Facelet Title</title> </h:head> <h:body> <h1>Standard Error messages</h1> <h:form> <h:panelGrid columns="3"> <h:outputLabel value="Car Id" for="Id"></h:outputLabel> <h:inputText value="#{car.id}" id="Id" required="true" label="Car Id"></h:inputText> <h:message for="Id" style="color: red"></h:message> <h:outputLabel value="Car Name"></h:outputLabel> <h:inputText value="#{car.cname}" id="cname" label="Car Name"> <c:validateLength minimum="5" maximum="10" for="cname" id="cname" </h:inputText> <h:message for="cname" style="color: red"></h:message> <h:outputLabel value="Mfd Date" for="mfddate"></h:outputLabel> <h:inputText value="#{car.mfddate}" id="mfddate" label="Mfd Date"> <c:convertDateTime </h:inputText> <h:message for="mfddate" style="color:red"></h:message> <h:outputLabel value="Price" for="price"></h:outputLabel> <h:inputText value="#{car.price}" id="price" label="Price"> <c:validateDoubleRange minimum="3.25" maximum="15.45" for="price"></c:validateDoubleRange> </h:inputText> <h:message for="price" style="color:red"></h:message> <h:outputLabel value="Engine" for="engine"></h:outputLabel> <h:selectOneRadio value="#{car.engine}" id="engine" required="true" label="engine"> <c:selectItem itemValue="Petrol" itemLabel="Petrol" <c:selectItem itemValue="Diesel" itemLabel="Diesel" </h:selectOneRadio> <h:message id="message" for="engine" style="color:red"></h:message> <h:commandButton action="#{car.id}" value="Submit"></h:commandButton> <br <br </h:panelGrid> </h:form> </h:body> </html>
在上面的JSF页面中,设置了required = true,以便该字段为必填字段,并且从JSF jar中存在的名为messages.properties
的文件中显示验证消息。
对于最小和最大长度验证,我们使用<c:validateLength>标记,该标记针对最小和最大字符数进行验证,并打印来自messages.properties
文件的验证。
价格字段的验证以类似的方式工作,不同之处在于检查输入值是否为double数据类型。
单选按钮验证器检查用户是否指定了汽油或者柴油发动机之一,如果没有,则在屏幕上闪烁一个错误。
日期验证器检查用户是否输入了正确的日期格式。
在所有这些情况下,我们都不必编写自己的字段验证逻辑,因为JSF为这些常见情况提供了内置功能。
现在,我们创建一个托管beanCar.java
,如下所示:
package com.theitroad.jsf.beans; import java.util.Date; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import javax.validation.constraints.NotNull; @ManagedBean @SessionScoped public class Car { private String cname; private String color; private String Id; private String model; private String regno; private Date mfddate; private Double price; private String description; @NotNull(message="Please select the engine type") private String engine; public String getEngine() { return engine; } public void setEngine(String engine) { this.engine = engine; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public String getCname() { System.out.println("car name is"+cname); return cname; } public void setCname(String cname) { this.cname = cname; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getRegno() { return regno; } public void setRegno(String regno) { this.regno = regno; } public String getModel() { return model; } public void setModel(String model) { this.model = model; } public String getId() { return Id; } public void setId(String Id) { this.Id = Id; } public Date getMfddate() { return mfddate; } public void setMfddate(Date mfddate) { this.mfddate = mfddate; } public Double getPrice() { return price; } public void setPrice(Double price) { this.price = price; } }
完成此更改后,运行代码.