Валидация не удалась в приложении 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;
}
Другие вопросы по тегам