Валидация не удалась в приложении Struts2
Я просто пытаюсь проверить форму с помощью аннотации Struts2, как показано ниже,
Home.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ 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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:form action="LoginClass" method="post">
<s:textfield name="Uname" label="User Name" />
<s:textfield name="Pwd" label="Password" />
<s:submit Value="Login" />
</s:form>
</body>
</html>
LoginCheckingClass.java:
package com.struts2;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import com.opensymphony.xwork2.validator.annotations.*;
@Results({
@Result(name="success", location="/LoginSuccessPage.jsp"),
@Result(name="input", location="/Home.jsp")
})
public class LoginCheckingClass extends ActionSupport {
private static final long serialVersionUID = 1L;
public String Uname;
public String Pwd;
@Action(value="/LoginClass")
public String execute() {
return SUCCESS;
}
@RequiredFieldValidator(message="Name should not blank.")
public String getUname()
{
return Uname;
}
public void setUname(String uname)
{
this.Uname = uname;
}
@RequiredFieldValidator(message="Password should not blank.")
public String getPwd()
{
return Pwd;
}
public void setPwd(String Pwd)
{
this.Pwd = Pwd;
}
}
Web.xml:
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>Struts2Application</display-name>
<welcome-file-list>
<welcome-file>home.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>Struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>Struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
Но Page всегда перенаправляет на LoginSuccessPage.jsp даже там, где есть пустые поля.
Я думаю, что я делаю аннотации не так, чтобы кто-то сказал мне, где я не прав?
Примечание: я делаю это приложение, просматривая http://www.tutorialspoint.com/struts_2/struts_annotations.htm
1 ответ
Аннотации ставятся на методы установки. Представьте значение, которое вы хотите присвоить полю, которое имеет неправильное значение. Сеттер вызывается, но он должен быть проверен на правильное значение.
@RequiredFieldValidator(message="Name should not blank.")
@RequiredStringValidator(message = "Name should not blank.")
public void setUname(String uname)
{
this.Uname = uname;
}
@RequiredFieldValidator(message="Password should not blank.")
@RequiredStringValidator(message = "Password should not blank.")
public void setPwd(String Pwd)
{
this.Pwd = Pwd;
}