DWZ框架Ajax表单提交


普通Ajax表单提交方式

DWZ 表单提交dwz.ajax.jsjavascript

Ajax 表单提交 后自动调用默认 回调函数, 操做成功或失败提示.java

Form标签上增长 onsubmit="return validateCallBack(this); ajax

Ajax 表单 提交后若是须要作一些其它处理也能够自定义一个回调函数. 例以下面表单提交成功后关闭当前navTab, 或者从新载入某个tab.  服务器

Form标签上增长  onsubmit="return validateCallBack(this,navTabAjaxDone )" app

navTabAjaxDoneDWZ框架中预约义的表单提交回调函数. 服务器转回navTabId能够把那个tab标记为reloadFlag=1, 次下切换到那个tab时会从新载入内容. navTabId若是是closeCurrent就会关闭当前tab 框架

navTabAjaxDone这个回调函数基本能够通用了, 若是还有特殊须要也能够自定义回调函数. 若是表单提交只提示操做是否成 功, 就能够不指定回调函数. 框架会默认调用ajaxDone()函数

 

{statusCode:200, message:"操做成功", navTabId:"closeCurrent"}post

{statusCode:200, message:"操做成功", navTabId:"page1"}ui

 

{statusCode:300, message:"操做失败", navTabId:""}this

 

 

:

<form method="post" action="url" class="pageForm required-validate" onsubmit="return validateCallBack(this);"> 

<div class="pageFormContent" layoutH="56"> 

      <p> 

            <label>E-Mail</label> 

            <input class="required email" name="email" type="text" size="30" /> 

      </p> 

      <p> 

            <label>客户名称:</label> 

            <input class="required" name="name" type="text" size="30" />

      </p>

</div>

<div class="formBar">

      <ul>

            <li>

                  <div class="buttonActive"><div class="buttonContent"><button type="submit">保存</button></div></div>

            </li>

            <li>

                  <div class="button"><div class="buttonContent"><button type="Button" class="close">取消</button></div></div>

            </li>

      </ul>

</div>

</form>

文件上传表单提 交方式

 

由于Ajax不支持enctype="multipart/form-data" 因此用隐藏iframe来处理 无刷新表单提交.  

<form method="post" action="url" class="pageForm required-validate" enctype="multipart/form-data" onsubmit="return ifarmeCallback(this);">

<form method="post" action="url" class="pageForm required-validate" enctype="multipart/form-data" onsubmit="return ifarmeCallback(this, xxxCallback);">

 

服务器端须要返回

<script type="text/javascript">

      var statusCode="${statusCode}";

      var message="${message}";                        

      var navTabId="${navTabId}";

 

      var response = {statusCode:statusCode,

                  message:message,

                  navTabId:navTabId

            }

      if(window.parent.donecallback) window.parent.donecallback(response);

</script>

 

 

Java服务器端表单处理示例

public class UserAction extends BaseAction {

 

public ActionForward changePwd(ActionMapping mapping, BaseActionForm bForm,

            HttpServletRequest request, HttpServletResponse response)

            throws IOException, ServletException {

      UserForm form = (UserForm) bForm;

 

      if (form.getOldPassword() == null

                  || "".equals(form.getOldPassword().trim())) {

            request.setAttribute("statusCode", 300);

            request.setAttribute("message", this.getMessage(request,

                  "msg.oldpassword.invalid"));

            return mapping.findForward("done");

      }

 

      User user = AppContextHolder.getContext().getUser();

 

      try {

            UserManager uManager = BusinessFactory.getFactory()

                        .getUserManager();

            uManager.changePassword(user, form.getOldPassword(), form

                        .getPassword());

            request.setAttribute("statusCode", 200);

            request.setAttribute("message", this.getMessage(request,

                  "msg.operation.success"));

      } catch (PasswordNotCorrectException e) {

            request.setAttribute("statusCode", 300);

            request.setAttribute("message", this.getMessage(request,

                  "msg.password.incorrect"));

      }

 

      return mapping.findForward("done");

}

protected ActionForward callbackForward(ActionMapping mapping,

            HttpServletRequest request) {

      if (ServerInfo.isAjax(request))

            return mapping.findForward("done");

      return mapping.findForward("callbackDone");

}

 

}

public

相关文章
相关标签/搜索