【问题标题】:show struts2 action error messages on to Modal在 Modal 上显示 struts2 操作错误消息
【发布时间】:2015-07-20 02:57:33
【问题描述】:

现在我有一个注册模式#modal_A:当用户点击一个链接时,弹出modal_A对话框,然后用户可以提交他/她的信息,但是当用户名无效时,一些错误消息应该显示在基于模式的模式上struts2.

这是jsp页面上的注册表单:

<div class="modal fade" id="registerModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
  <div class="modal-dialog modal-sm login-position" role="document">
    <div class="modal-cell">
      <div class="modal-content">
        <div class="login-modal">
            <div class="omb_login">
                <div class="row">
                    <div class="col-xs-11 login-left">  
                        <s:form class="omb_loginForm" name="register" theme="simple" action="RegisterAction" autocomplete="off" method="POST">
                            <div class="input-group">
                                <span class="input-group-addon"><i class="fa fa-user" style="font-size: 15px;"></i></span>
                                <s:textfield type="text" class="form-control line-height" name="username" id="username_register" placeholder="User name"/>
                            </div>
                            <span class="help-block"></span>

                            <div class="input-group">
                                <span class="input-group-addon"><i class="fa fa-envelope" style="font-size: 9px;"></i></span>
                                <s:textfield type="text" class="form-control line-height" name="email" id="email_register" placeholder="Email"/>
                            </div>
                            <span class="help-block"></span>

                            <div class="input-group">
                                <span class="input-group-addon"><i class="fa fa-phone-square" style="font-size: 13px;"></i></span>
                                <s:textfield type="text" class="form-control line-height" name="telephone" id="telephone_register" placeholder="Telephone"/>
                            </div>
                            <span class="help-block"></span>

                            <div class="input-group">
                                <span class="input-group-addon"><i class="fa fa-lock" style="font-size: 18px;"></i></span>
                                <s:textfield  type="password" class="form-control" name="password" id="password_register" placeholder="Password"/>
                            </div>
                            <span class="help-block"></span>
                            <s:submit id="hide" class="btn btn-lg login-btn-primary btn-block" type="submit" key="register.register"/>
                            <span class="help-block"></span>
                        </s:form>
                    </div>
                </div>
            </div>
        </div>
      </div>
    </div>
  </div>
</div>

这里是 struts 动作:

<action name="RegisterAction" class="RegisterAction">
       <result name="success">/index.jsp</result>    
       <result name="input">/index.jsp</result>   
</action>

这里是验证器:

<validators>
<field name="username">
    <field-validator type="requiredstring">
        <param name="trim">true</param>
        <message>test!!!!!!!!!!</message>
    </field-validator>
</field>
</validators>

现在当用户名为空时,我希望它可以在模态框上显示消息。

但问题是:当用户名为null时,直接跳转到index.jsp页面,但没有显示modal。那么如何解决呢?

【问题讨论】:

  • 你是第一次打开模态,对吧?然后,您需要处理输入/错误情况并在页面加载时重新打开模式,简而言之。请显示更多详细信息,我在这里看不到任何模式,这是我们可以使用提供的代码做的最大值。另请阅读这可能会有所帮助:stackoverflow.com/a/28558436/1654265
  • @zhanzhan 我正在使用引导模式..为了显示验证错误我在 struts.xml 中使用 type=json 而不是使用 s:form 通过 jquery 提交表单(通过 AJAX 传递字段值)...:)

标签: javascript jquery twitter-bootstrap struts2 modal-dialog


【解决方案1】:

Struts.xml 添加结果类型...

     <result-types>
                    <result-type name="json" class="org.apache.struts2.json.JSONResult"/>
            </result-types> 

Struts 动作

        <action name="RegisterAction" class="RegisterAction">
        <result name="INPUT">/index.jsp</result>
        <result name="ERROR" type="json">/index.jsp</result>
        <interceptor-ref name="jsonValidationWorkflowStack"></interceptor-ref>
        <param name="ignoreHierarchy">false</param>
        <param name="includeProperties">actionErrors\[\d+\], fieldErrors\..+$, actionMessages\[\d+\]</param>
        <result name="success" type="json">/index.jsp</result>
        </action>

在Jsp页面中

<div class="input-group">
<span class="input-group-addon"><i class="fa fa-user" style="font-size: 15px;"></i></span>
    <input type="text" class="form-control line-height" name="username" id="username_register" placeholder="User name"/>
<input type="button"  id="username_submit" />
</div>

阿贾克斯

$(document).ready(function() {
       $("#username_submit").click(function(){
           var username=$("#username_register").val();
       $.ajax({
           type: 'GET',
           url:'RegisterAction?username='+encodeURIComponent(username),
           dataType: 'json',
           success: function(data){
            if(data.fieldErrors && !isEmpty(data.fieldErrors)){
           $.each(data.fieldErrors,function(index,value){ //indexfieldname,valuefiled?
          $("#username_register").before('<span>'+value[0]+'</span>');
            });
           return;
           } 



           },
                   error: function() 
                   {

                   }
        });
        return false;
       });});


function isEmpty(obj){//(Object obj = {}isEmpty=true)
    for(var p in obj){
        return false;
    }
    return true;
}

注意:添加 struts2json 插件 Jar..并在警报中您将遇到 struts2 验证错误...希望这对您有所帮助:)

【讨论】:

  • @Zhan 你试过这个吗...??
  • 对不起,我刚刚和朋友吃饭了。现在我正在尝试这个。
  • 酷!现在当提交按钮被提交时,它将停留在模式上。但是出现了另一个问题:模态上没有显示任何错误消息。我检查了网页,发现有错误:GET http://localhost:8080/gotwiss/RegisterAction?username=testname 404 (Not Found)。你能告诉我为什么吗?请
  • 好的!我在 js 代码中没有发现任何错误的东西。我希望在模式上显示验证器消息,但它不起作用。你想查看整个代码(js、xml 和验证器)吗?
  • @ZhanzhanCheng 在 StackOverflow 上,您应该将一个新问题作为(猜猜看)一个新问题发布,而不是在 cmets 中(或者更糟糕的是,通过编辑)已经回答的原始问题。这是一个新问题,所以请打开一个新问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-27
  • 1970-01-01
相关资源
最近更新 更多