<h:message>标签不显示消息

时间:2020-04-14 12:50:35

标签: jsf

我在每次输入错误的电子邮件地址时向用户显示register bean的错误消息时遇到问题。
每当用户键入错误的电子邮件地址时,屏幕上都不会显示任何消息。我已经读过关于stackoverflow的几篇文章,包括错误的web.xml配置等,但是我的问题没有解决。我正在使用带有netbeans 8.2的glassfish服务器。

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"    
      >
    <h:head>
        <title>Registration form</title>
        <!--<link rel="stylesheet" type="text/css" href="../styles/registrationFlow.css"/>-->
    </h:head>
    <h:body>
        <div class="registerContainer">
            <div class="formContainer">
                <h:form class="registerForm">
                    <h:message for="register" id="errormessage"/>
                    <h:outputText value="Username "/>
                    <h:inputText id="username" value="#{registration.username}"></h:inputText>

                    <h:outputText value="Password "/>
                    <h:inputSecret id="password" value="#{registration.password}"></h:inputSecret>

                    <h:outputText value="Firstname "/>
                    <h:inputText id="first" value="#{registration.first}"></h:inputText>

                    <h:outputText value="Lastname "/>
                    <h:inputText id="last" value="#{registration.last}"></h:inputText>

                    <h:outputText value="Email "/>
                    <h:inputText id="email" value="#{registration.email}"></h:inputText>
                    <h:commandButton id="register" action="#{registration.register}" value="Zarejestruj" style="margin: 15px auto; width: 35%; "></h:commandButton>
                    <h:messages for="register"/>
                </h:form>
            </div>
        </div>
    </h:body>
</html>

我的registration

package com.pa.controllers;

import com.pa.entities.User;
import com.pa.serviceDAO.UserFacade;
import com.pa.utils.SessionUtil;
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.http.HttpSession;

@Named
@SessionScoped
public class Registration implements Serializable {

    private static final long serialVersionUID = 1L;

    @Inject
    private UserFacade userDAO;

    private String username;
    private String password;
    private String first;
    private String last;
    private String email;

    private User user;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getFirst() {
        return first;
    }

    public void setFirst(String first) {
        this.first = first;
    }

    public String getLast() {
        return last;
    }

    public void setLast(String last) {
        this.last = last;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public Boolean validateEmail(String email) {
        String regex = "^[\\w-_\\.+]*[\\w-_\\.]\\@([\\w]+\\.)+[\\w]+[\\w]$";
        return email.matches(regex);
    }


    public String register() {
        boolean validateEmail = validateEmail(email);
        User existingUser = userDAO.checkIfExists(username, email);
        if (existingUser == null && validateEmail) {
            User newUser = new User();
            newUser.setUsername(username);
            newUser.setPassword(password);
            newUser.setFirstName(first);
            newUser.setLastName(last);
            newUser.setUserMail(email);
            newUser.setUserRole("user");
            try {
                userDAO.add(newUser);
                HttpSession session = SessionUtil.getSession();                
                session.setAttribute("username", username);
                session.setAttribute("userId", newUser.getIdUser());
                session.setAttribute("firstname", first);
                setUser(newUser);
            } catch (Exception e) {
                return null;
            }
            return "addClients?faces-redirect=true";
        } else if (validateEmail == false) {            
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Provided email is invalid", null);
            FacesContext ctx = FacesContext.getCurrentInstance();
            ctx.addMessage(null, message);
            System.out.println("wrong email");
        } else {
            return null;
        }
        return null;
    }
}

和我的web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <context-param>
      <param-name>javax.faces.CONFIG_FILES</param-name>
      <param-value>/WEB-INF/faces-config.xml</param-value>
   </context-param>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.xhtml</welcome-file>
    </welcome-file-list>
</web-app>

0 个答案:

没有答案