【问题标题】:Struts 2 Action not getting invokedStruts 2 Action 没有被调用
【发布时间】:2014-04-27 15:29:39
【问题描述】:

几天来,我试图了解为什么我的操作没有以这种特定形式被调用。

我的表单如下所示,并且我有与 Bootstrap 框架一起使用的 struts URL 标签:

 <s:form action="RegisterUser" cssClass="form-horizontal" id="id-register-form" method="post">
   Couple of Struts 2 UI tags
 </s:form>

我的注册用户操作非常简单,其中只有一个执行方法,它返回字符串"success"

public class RegisterUser extends ActionSupport {

    public RegisterUser() {
    }

    @Override
    public String execute() throws Exception {
        System.out.println("Inside execute method test 1!");
          return "success";
    }

}

我的struts.xml 如下所示:

 <action name="RegisterUser" class="Mypackage.RegisterUser" method="execute"> 
            <result name="success">/WEB-INF/views/usermanagement/register-success.jsp</result>
            <result name="error">/WEB-INF/views/usermanagement/register-error.jsp</result>
        </action>  

但是每当我点击表单的提交按钮时,表单提交永远不会被触发。我使用 jquery 验证库进行客户端验证,然后使用 struts 验证框架进行服务器端验证,但我认为问题与验证无关,但更多与操作映射端或与提交按钮相关的内容有关。下面是我的提交按钮,

<s:submit type="button" cssClass="btn btn-primary" value="Create Account" cssStyle="float:left;">Create Account</s:submit>

感谢有人可以看看并给我一些见解。我在 Glassfish v4 上并使用 Netbeans IDE,我的 Struts 2 在 win 8.1 上是 2.3.15.3

这是我使用 jQuery 进行客户端验证的 JS 代码:

$(document).ready(function() {


    // validate the comment form when it is submitted
    $("#id-register-form").validate({
        errorPlacement: function(error, element) {
            if (element.attr("name") == "Email") {
                error.appendTo('#error-Email');
            }
            else if (element.attr("name") == "Password") {
                error.appendTo('#error-Password');
            }
            else if (element.attr("name") == "ConfirmPassword") {
                error.appendTo('#error-ConfirmPassword');
            }
            else if (element.attr("name") == "AgreetoPolicy") {
                error.appendTo('#error-Agree');
            }

        },
        rules: {
            Email: {
                required: true,
                email: true
            },
            Password: {
                required: true,
                minlength: 5
            },
            ConfirmPassword: {
                required: true,
                minlength: 8,
                equalTo: "#Password"
            },
            AgreetoPolicy: "required"
        },
        messages: {
            Email: "<small>Please enter a valid email address</small>",
            Password: {
                required: "<small>Please provide a password</small>",
                minlength: "<small>Your password must be at least 8 characters long</small>"
            },
            ConfirmPassword: {
                required: "<small>Please provide a password</small>",
                minlength: "<small>Your password must be at least 5 characters long</small>",
                equalTo: "<small>Please enter the same password as above</small>"
            },
            AgreetoPolicy: "<strong><small>Please accept our policy</small></strong>"
        }
    });
});

【问题讨论】:

  • 您的提交按钮在您的表单中吗?
  • javascript 控制台出现任何错误?
  • 没有它的干净,控制台中没有错误或警告。
  • 没有错误,也没有提交?如果使用 Firefox,或者在另一个浏览器中的同一工具中,您在 Firebug NET 面板中看到了什么?任何网络流量?
  • 问题在于您没有发布的 javascript 代码。

标签: java jquery jsp validation struts2


【解决方案1】:

尝试更改此代码所在的消息

Email:  {
          required: "<small>Please enter a valid email address</small>",
          email: "Email addresses are of the form user@host."
        }

【讨论】:

  • 哈哈明白了,但问题是使用 jquery 验证它没有提交表单。关于如何使它工作的任何建议?
  • 是的,已经完成了。但仍然是同样的问题。无法使用 struts 2 ui 标记进行 jquery 验证。没有 jquery validate ,动作被正确调用。
【解决方案2】:

是的问题现在已解决。是我损坏的 Jquery 验证代码导致未提交表单...感谢 Roman 和 Andrea 的帮助和帮助。感谢它。

【讨论】:

    猜你喜欢
    • 2017-03-23
    • 2014-04-16
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    相关资源
    最近更新 更多