java - Struts2 验证不仅仅适用于正则表达式

标签 java regex jsp validation struts2

对于所需的字符串(和电子邮件,我只测试了这些),验证工作正常。但是当我尝试使用正则表达式时,验证无效。

<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
    <field name="cognome">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message>Cognome è un campo obbligatorio</message>
        </field-validator>
    </field>
    <field name="telefono">
        <field-validator type="requiredstring">
            <message key="errors.required" />
        </field-validator>
        <field-validator type="regex">
            <param name="expression">[0-9]{9,15}</param>
            <message>Il numero di telefono deve essere minimo di 9 cifre
            </message>
        </field-validator>
    </field>

</validators>

电话 必须有 9 到 15 个数字。当字段丢失时,这会出错,如果我插入像“123”这样的电话,则不会出错。

jsp:

<%@ page language="java" contentType="text/html;"
     import="java.util.*,it.almaviva.bean.*,it.almaviva.delegate.*;"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<link href="${pageContext.request.contextPath}/css/stile1.css" rel="stylesheet" type="text/css" />
<title>Registrazione account</title>
</head>

<body>
<jsp:include page="header.jsp"/> 
<s:actionerror />

<s:form name="formDatiUtente" action="inviaRichiesta.action" method="post" theme="simple" validate="true">

<center>
<s:fielderror></s:fielderror>
<table width="48%" class="LISTA" border="0" cellPadding="3" cellSpacing="5" align="center">
                <tr>
                    <td width="35%">
                        <p class="testodx">
                            <s:text name="label.cognome" />
                        </p>
                    </td>
                    <td>
                        <p class="testosx">
                            <s:textfield name="cognome" id="idCognome"
                            size="30" value="%{anagraficaVDR.cognome}" />
                        </p>
                    </td>
                </tr>

                <tr>
                    <td>
                        <p class="testodx"><s:text name="label.telefono_Ufficio_reparto" /></p>
                    </td>
                    <td>
                        <s:textfield name="telefono" id="idTelefono_Ufficio_reparto" size="30" value="%{anagraficaVDR.telefono}"/>
                    </td>
                </tr>

</table>
<br>

<s:if test="!gestioneAmministratore">
    <s:submit method="execute" cssClass="bottone" key="label.invia" align="center" />
</s:if>    
</center>  

</s:form>
</body>
</html>

另一个次要问题是,如果我删除它:

<s:fielderror></s:fielderror>

不显示错误信息。这很奇怪,因为例如 here此字符串丢失,错误消息显示正确(每个字段下,我喜欢的东西)。

另一个次要问题是,如果我不插入一个字段并按下提交,我会(正确地)得到一个错误,但是字段中的所有值都被删除了,相反我更愿意保留所有(就像之前的那样)例如 I linked )。

最佳答案

参数应该是regexExpression , 不是 expression .

http://struts.apache.org/development/2.x/docs/regex-validator.html

要显示特定字段的错误,请使用 fieldName属性,例如,

<s:fielderror fieldName="cogname" />

请注意 <s:form>validate属性涉及客户端验证;它与服务器端的验证无关。

关于java - Struts2 验证不仅仅适用于正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22019803/

相关文章:

java - 用于从嘈杂的音频文件中识别单词的机器学习库

java - 正则表达式贪婪匹配选择整行

java - 如何检查字段是否已初始化或包含Java中的默认值

java - 如果未找到匹配项,Ant ReplaceRegexp 任务会失败吗?

php - 在 mysql REGEXP 查询中转义单引号

java - 将字符串数组从 JSP 页面传递到服务器

javascript - 在 javascript 文件中访问 CSS 文件

java - 在 JSP/GSP 中显示结果集

regex - bash: oneliner 将输出中的十六进制数转换为十进制数

c# - C# Regex 如何捕获 *| 之间的所有内容?和 |*?