저는 Struts2의 초보자입니다. 유효성 검사 프레임 워크를 사용하여 양식의 입력 데이터의 유효성을 검사하려고 시도했을 때 문제가 발생했습니다. 유효성 검사기가 전혀 작동하지 않습니다. 아무것도 입력하지 않고 유효성 검사를 통과하면 리턴되어야하는 페이지를 얻을 수 있습니다.xml 구성의 Struts2 유효성 검사기가 작동하지 않습니다.
다음은 내 코드 및 패키지입니다. StackOverFlow에서 검색했지만 내 문제를 해결하는 솔루션을 찾지 못했습니다.
Register.java
package validation;
/**
* Created by xiangang.wei on 2016/10/26.
*/
public class Register {
private String userName;
private String password;
private String rpassword;
private int age;
private int phone;
private String email;
public String getRpassword() {
return rpassword;
}
public void setRpassword(String rpassword) {
this.rpassword = rpassword;
}
public void setUserName(String userName) {
this.userName = userName;
}
public void setPassword(String password) {
this.password = password;
}
public void setAge(int age) {
this.age = age;
}
public void setPhone(int phone) {
this.phone = phone;
}
public void setEmail(String email) {
this.email = email;
}
public String getUserName() {
return userName;
}
public String getPassword() {
return password;
}
public int getAge() {
return age;
}
public int getPhone() {
return phone;
}
public String getEmail() {
return email;
}
public String execute(){
return "success";
}
}
등록-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<validator type="stringlength" >
<param name="fieldName">userName</param>
<param name="maxLength">10</param>
<param name="minLength">1</param>
<message>The length is wrong!</message>
</validator>
<validator type="fieldexpression">
<param name="fieldName">password</param>
<param name="expression">![CDATA[password == rpassword]]</param>
<message>The password is not the same!</message>
</validator>
<validator type="int">
<param name="fieldName">age</param>
<param name="max">130</param>
<param name="min">1</param>
<message>The age must be 1 - 130</message>
</validator>
<validator type="email">
<param name="fieldName">email</param>
<message> Please enter a valid email address!</message>
</validator>
</validators>
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="register" extends="struts-default" namespace="/">
<action name="register" class="validation.Register">
<result name="success">/register-view/register-success.jsp</result>
<result name="input">/index.jsp</result>
</action>
</package>
</struts>
web.xml의
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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"
version="3.1">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
build.gradle
group 'xiangang.wei'
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'war'
sourceCompatibility = 1.8
repositories {
jcenter()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
compile 'org.apache.struts:struts2-core:2.5'
}
index.jsp를
<%@ taglib prefix="s" uri="/struts-tags" %>
<%--
Created by IntelliJ IDEA.
User: xiangang.wei
Date: 2016/10/26
Time: 11:19
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>User Register!</title>
</head>
<body>
<s:form action="register" method="POST">
<table>
<tr>
<td><s:textfield label="Name" name="userName"/></td>
</tr>
<tr>
<td><s:password label="Password" name="password"/></td>
</tr>
<tr>
<td><s:password label="Confirm Password" name="rpassword"/></td>
</tr>
<tr>
<td><s:textfield label="age" name="age"/></td>
</tr>
<tr>
<td><s:textfield label="Phone" name="phone"/></td>
</tr>
<tr>
<td><s:textfield label="Email" name="email"/></td>
</tr>
<tr>
<td>
<s:submit value="Submit"/>
</td>
<td>
<s:reset value="Reset"/>
</td>
</tr>
</table>
</s:form>
</body>
</html>
레지스터 success.jsp
@Roman C 내 질문에 답변 해 주셔서 감사합니다. 다른 질문에서 귀하의 답변을 읽었으며 좋은 답변입니다. 유효성 검사기 사용 방법이 설명되어 있습니다. 그러나 나는 아직도 내 문제를 해결하지 못한다고 생각한다. Andrea Ligios가 말한 것처럼 ActionSupport 클래스를 확장하더라도 유효성 검사기는 여전히 죽었습니다! 그것은 전혀 작동하지 않습니다. –
솔직히 문제를 해결하기 위해 지금까지 무엇을 했습니까? 당신은 SO가 도움을 제공하지 않고 당신의 문제를 해결하지 않는다는 것을 알아야합니다. 사람들이 좋은 질문을하고 좋은 답변을받는 Q & A 사이트이므로 모두가 독서를 즐긴다. 당신과 같은 질문은 전적으로 사적입니다. 프로그래밍에 문제가 있거나 특정 분야에 지식이 부족한 경우라면 SO 외부에서 배워야합니다. 질문의 주제를 이해하지 못하면 당신을 도울 수 없습니다. –