Структура проверки Struts2 не работает на стороне клиента - PullRequest
0 голосов
/ 20 октября 2011

Я использую структуру проверки struts2 для проверки данных в клиенте.Я прочитал много руководств по валидации, но все еще не могу найти, где я совершил ошибку.

Я использую Struts 2.2.3.Конфигурация struts.xml выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
    "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
  <constant name="struts.devMode" value="true" />

  <package name="admin" namespace="/" extends="struts-default">
    <default-action-ref name="index" />

    <global-results>
      <result name="error">/error.jsp</result>
    </global-results>

    <global-exception-mappings>
      <exception-mapping exception="java.lang.Exception" result="error" />
    </global-exception-mappings>

    <action name="login" class="com.text.LoginAction">
      <result name="login">/login_page.jsp</result>
      <result name="success">/login_success.jsp</result>
      <result name="error">/login_page.jsp</result>
    </action>
  </package>
</struts>

В index.jsp я захожу в действие struts2 и захожу на страницу входа.

<body>
  <a href="login!handle.action">Go to Login Page</a>
</body>

login_page.jsp

<body>
  <s:form action="login!login.action" validate="true" method="post">
    <s:textfield name="username" label="Username"/>
    <s:textfield name="password" label="Password"/>
    <s:submit value="Submit"/>
  </s:form>
</body>

LoginAction, аннотация @SkipValidation используется для пропуска проверки для конкретного метода

public class LoginAction extends ActionSupport {

    private static final long serialVersionUID = 1L;

    private String username;
    private String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String login() {
        if (username.equalsIgnoreCase("root") && password.equalsIgnoreCase("1234")) {
            return "success";
        } else {
            return "fail";
        }
    }

    @SkipValidation
    public String handle() {
        return "login";
    }
}

LoginAction-validation.xml в том же пакете с LoginAction.

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
     "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<validators>
  <field name="username">  
    <field-validator type="requiredstring">
      <param name="trim">true</param>
      <message>Login name is required</message>  
    </field-validator>
  </field>

  <field name="password">
    <field-validator type="requiredstring">
      <param name="trim">true</param>
      <message>Password is required</message>
    </field-validator>
  </field>  
</validators>

После добавленияvalidate = "true" в s: form, я иду на страницу и пытаюсь получить доступ к validation.js и utils.js.Это файл отчета об ошибках Apache Tomcat.Я думаю, это означает, что проверка на стороне клиента не работает.Может кто-нибудь помочь мне это исправить?Заранее спасибо.

1 Ответ

1 голос
/ 20 октября 2011

При отображении в .action вместо подстановочного знака, как описано в документах S2 web.xml , вы не позволяете S2 обслуживать необходимые файлы JavaScript.

Вы можете извлечь статические файлы, которые S2 обычно обслуживает самостоятельно, или исправить ваше отображение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...