【问题标题】:E-mail Validation Using Regex not working for jsf?使用正则表达式的电子邮件验证不适用于 jsf?
【发布时间】:2013-12-24 16:03:23
【问题描述】:


我正在为我的 jsp 页面使用 JSF 2.1。我在一个 DIV 标记中包含了一个 h:inputText 和一个 h:commandButton,该标记在单击忘记密码的 DIV 时出现。我想在客户端本身验证有效电子邮件地址的输入字段,所以我使用了 f:validateRegex 和“validatorMessage”,但是当我提供错误的电子邮件地址时它似乎仍然不起作用说“123gmail.com”或在不输入任何文本的情况下提交。它所做的只是重新加载页面。谁能帮帮我...

这是我编辑的 JSP 页面代码供参考

<!DOCTYPE html>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@page import="com.fla.mbeans.ForgotPass"%>
<html>
  <head>
</head>
<body>
       <div style="left: 44%;top: 6%;width: 250px; position: relative;padding:20px;cursor: pointer" onclick="copytext()">
                <span id="fstyle"><ul>Forgot Password?</ul></span>
       </div>
 <div  id="fgpass" >

                    <div id="newpass">
                        <div style="position: absolute;top: 10%;left: 10%;">
                            <center><h2>PASSWORD RECOVERY</h2></center>
                            <h4> Enter Your Registered</h4> 


                  <h4>E-Mail Address :</h4>

                    <f:view>
                        <h:form>
                         <center>
                             <h:inputText id="cmailid" required="true" value="#{forgotPass.mailid}" validatorMessage="Invalid email">
                                 <f:validateRegex pattern="[\w\.-]*[a-zA-Z0-9_]@[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]"/>
                             </h:inputText>
                             <h:commandButton value="Submit" action="#{forgotPass.fpass}">

                            </h:commandButton>



                         </center>

                   </div>
                    </div>

                            </h:form>
                </div>
 </body>
  </f:view>
</html>

我的 CSS

#fgpass {
    position: absolute;
    left: 65%;
    top: 4%;

    border-color: #009900;
    border-width: 3px;
    border-radius: inherit;
   z-index: 800;

}
#newpass{
   position: absolute;
   z-index: 1000;
   height:160px;
   width: 250px;
  color: midnightblue;

   visibility: hidden;
   background-color: lavender;
   -moz-border-radius: 8px;
   border-radius: 8px;
   border-width: 3px;
   border-color:#444;
}  

我的js

function copytext()
{
    var unhide=document.getElementById('newpass');
    src=document.getElementById('mailid');
    unhide.style.visibility='visible';
    dest=document.getElementById('cmailid');
    dest.value = src.value;
}

谁能告诉我为什么它不工作或我可以在客户端进行验证的任何其他方式.....我是新手,请帮助(谢谢)

【问题讨论】:

  • 您拥有哪个 JSF JAR 文件?看到使用已弃用的 JSP 而不是其继任者 Facelets,真是令人惊讶。这表明您实际上使用的是 JSF 1.x,这将解释 &lt;f:validateRegex&gt; 根本没有完成其工作的问题。
  • @BalusC 你是最好的伙伴.....我已经上传了我使用的库的图片 请帮帮我,我对所有这些都是新手,正在做我被告知的事情要做...。我才知道只有在您提到之后才弃用 JSP...我希望 PIC 能帮助您找到我的问题请帮忙或给我一个替代解决方案...你....感谢您的回复:))
  • 只是一个注释。 _@9.aB% 不是正确的电子邮件,但会通过此正则表达式。试试:[a-zA-Z0-9]([\w\.-]*[a-zA-Z0-9]+)+@[a-zA-Z0-9]([a-zA-Z0-9\.-]*[a-zA-Z0-9]+)+\.[a-zA-Z]{2,9} 也可以用^$\b 之类的包起来。
  • @Suamere 谢谢你,我会尝试并回复你....
  • 使用正则表达式来验证电子邮件通常不是一个好主意。这是一个页面,它显示了解析所有有效 RFC822 电子邮件地址的正则表达式:ex-parrot.com/pdw/Mail-RFC822-Address.html - 我不建议复制和粘贴它。

标签: javascript jquery regex jsp jsf


【解决方案1】:

在 jsf 中使用 f validateRegex 进行电子邮件验证。

使用^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$ 模式进行电子邮件验证。

示例:

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>

<f:view>
    <style type="text/css">
        .error {
            color: red;
        }
        .info {
            color: green;
        }
    </style>
    <h:form id="regexForm">
        <div>
            <h:messages id="messagesId" errorClass="error" infoClass="info"></h:messages>
            <h:inputText id="primaryEmailId" validatorMessage="Invalid PrimaryEmail [ Ex: udaykiran.pulipati@gmail.com ]" required="true"
                requiredMessage="Please Enter PrimaryEmail">
                <f:validateRegex pattern="^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$"></f:validateRegex>
            </h:inputText>
        </div>
        <div>
            <h:commandButton value="Submit"></h:commandButton>
        </div>
    </h:form>
</f:view>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    • 2013-01-16
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-12
    相关资源
    最近更新 更多