【问题标题】:Struts ajax validator not workingStruts ajax 验证器不工作
【发布时间】:2017-05-17 12:36:11
【问题描述】:

我的 struts 2 ajax 验证器不工作。所有文件和罐子都在正确的位置。如果我在文本框中输入正确的值,验证仍然会触发,我尝试修复代码中的小改动,但问题仍然存在

index.jsp

<%@ taglib  uri="/struts-tags" prefix="s"%>  
<%@ taglib uri="/struts-dojo-tags" prefix="d"%>  
<html>  
<head>  
<d:head/>  
</head>  
<body>  
<marquee>Registration Form.............</marquee>  

<s:form action="register">  
<s:textfield name="name" label="Username"></s:textfield>  
<s:textfield name="email" label="Email ID"></s:textfield>  
<s:password name="password" label="Password"></s:password>  
<d:submit validate="true" type="image" src="register-now.jpg">  
</d:submit>  
</s:form>  

</body>  
</html>  

Struts.xml

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

<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="register" class="com.RegisterAction">
<interceptor-ref name="jsonValidationWorkflowStack"></interceptor-ref>  

<result name="success">welcome.jsp</result>  
<result name="input">index.jsp</result>  
</action>  
</package>

</struts>

RegisterAction.java

package com;

import com.opensymphony.xwork2.ActionSupport;

public class RegisterAction extends ActionSupport{  
    private String email;  


    public String getEmail() {  
        return email;  
    }  


    public void setEmail(String email) {  
        this.email = email;  
    }  


    public String execute(){  
        return "success";  
    }  

    }  

RegisterAction-Validator.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>  

    <field name="name">  
    <field-validator type="requiredstring">  
    <message>Name can't be blank</message>  
    </field-validator>  
    </field>  

    <field name="email">  
    <field-validator type="requiredstring">  
    <message>Email ID can't be blank</message>  
    </field-validator>  

    <field-validator type="email">  
    <message>Please enter a valid email ID</message>  
    </field-validator>  
    </field>  

    <field name="password">  
    <field-validator type="requiredstring">  
    <message>Password can't be blank</message>  
    </field-validator>  
    <field-validator type="stringlength">  
    <param name="minLength">5</param>  
    <param name="maxLength">10</param>  
    <message>Password can't be less than 5 or greater than 10</message>  
    </field-validator>  

    </field>  

    </validators>      

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>Struts2Starter</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.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>

【问题讨论】:

  • S2 dojo 插件已弃用。
  • 哪个版本的 Struts,如果不提供MCVE,你怎么能知道一切都在正确的位置?

标签: java ajax jsp struts2


【解决方案1】:

确保在验证发生时 - 堆栈上确实存在值。如果没有,那么您的拦截器可能会在 params 拦截器使表单值可访问之前被调用。

https://struts.apache.org/docs/validation-interceptor.html

仔细检查它是否试图从您的操作中获取值。如果是这样,RegisterAction 中的所有表单值都需要 getter/setter。姓名/密码不仅仅是电子邮件。

【讨论】:

    猜你喜欢
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多