PageRenderTime 35ms CodeModel.GetById 8ms RepoModel.GetById 0ms app.codeStats 0ms

/src/main/java/org/jeecgframework/tag/core/easyui/FormValidationTag.java

https://gitlab.com/spiderworts/ab_weixin_cms
Java | 254 lines | 200 code | 22 blank | 32 comment | 31 complexity | 26fd50d12022efcb31c222052f9fb99a MD5 | raw file
  1. package org.jeecgframework.tag.core.easyui;
  2. import java.io.IOException;
  3. import javax.servlet.jsp.JspException;
  4. import javax.servlet.jsp.JspWriter;
  5. import javax.servlet.jsp.tagext.TagSupport;
  6. import org.jeecgframework.core.util.StringUtil;
  7. /**
  8. *
  9. * @author 张代浩
  10. *
  11. */
  12. public class FormValidationTag extends TagSupport {
  13. protected String formid = "formobj";// 表单FORM ID
  14. protected Boolean refresh = true;
  15. protected String callback;// 回调函数
  16. protected String beforeSubmit;// 提交前处理函数
  17. protected String btnsub = "btn_sub";// 以ID为标记触发提交事件
  18. protected String btnreset = "btn_reset";// 以ID为标记触发提交事件
  19. protected String layout = "div";// 表单布局
  20. protected String usePlugin;// 外调插件
  21. protected boolean dialog = true;// 是否是弹出窗口模式
  22. protected String action;// 表单提交路径
  23. protected String tabtitle;// 表单选项卡
  24. protected String tiptype = "4";//校验方式
  25. public void setTabtitle(String tabtitle) {
  26. this.tabtitle = tabtitle;
  27. }
  28. public void setDialog(boolean dialog) {
  29. this.dialog = dialog;
  30. }
  31. public void setBtnsub(String btnsub) {
  32. this.btnsub = btnsub;
  33. }
  34. public void setRefresh(Boolean refresh) {
  35. this.refresh = refresh;
  36. }
  37. public void setBtnreset(String btnreset) {
  38. this.btnreset = btnreset;
  39. }
  40. public void setFormid(String formid) {
  41. this.formid = formid;
  42. }
  43. public void setAction(String action) {
  44. this.action = action;
  45. }
  46. public int doStartTag() throws JspException {
  47. try {
  48. JspWriter out = this.pageContext.getOut();
  49. StringBuffer sb = new StringBuffer();
  50. if ("div".equals(layout)) {
  51. sb.append("<div id=\"content\">");
  52. sb.append("<div id=\"wrapper\">");
  53. sb.append("<div id=\"steps\">");
  54. }
  55. sb.append("<form id=\"" + formid + "\" action=\"" + action + "\" name=\"" + formid + "\" method=\"post\">");
  56. if ("btn_sub".equals(btnsub) && dialog)
  57. sb.append("<input type=\"hidden\" id=\"" + btnsub + "\" class=\"" + btnsub + "\"/>");
  58. out.print(sb.toString());
  59. out.flush();
  60. } catch (IOException e) {
  61. e.printStackTrace();
  62. }
  63. return EVAL_PAGE;
  64. }
  65. public int doEndTag() throws JspException {
  66. try {
  67. JspWriter out = this.pageContext.getOut();
  68. StringBuffer sb = new StringBuffer();
  69. if (layout.equals("div")) {
  70. sb.append("<link rel=\"stylesheet\" href=\"plug-in/Validform/css/divfrom.css\" type=\"text/css\"/>");
  71. if (tabtitle != null)
  72. sb.append("<script type=\"text/javascript\" src=\"plug-in/Validform/js/form.js\"></script>");
  73. }
  74. sb.append("<link rel=\"stylesheet\" href=\"plug-in/Validform/css/style.css\" type=\"text/css\"/>");
  75. sb.append("<link rel=\"stylesheet\" href=\"plug-in/Validform/css/tablefrom.css\" type=\"text/css\"/>");
  76. sb.append("<script type=\"text/javascript\" src=\"plug-in/Validform/js/Validform_v5.3.1_min.js\"></script>");
  77. sb.append("<script type=\"text/javascript\" src=\"plug-in/Validform/js/Validform_Datatype.js\"></script>");
  78. sb.append("<script type=\"text/javascript\" src=\"plug-in/Validform/js/datatype.js\"></script>");
  79. if (usePlugin != null) {
  80. if (usePlugin.indexOf("jqtransform") >= 0) {
  81. sb.append("<SCRIPT type=\"text/javascript\" src=\"plug-in/Validform/plugin/jqtransform/jquery.jqtransform.js\"></SCRIPT>");
  82. sb.append("<LINK rel=\"stylesheet\" href=\"plug-in/Validform/plugin/jqtransform/jqtransform.css\" type=\"text/css\"></LINK>");
  83. }
  84. if (usePlugin.indexOf("password") >= 0) {
  85. sb.append("<SCRIPT type=\"text/javascript\" src=\"plug-in/Validform/plugin/passwordStrength/passwordStrength-min.js\"></SCRIPT>");
  86. }
  87. }
  88. sb.append("<script type=\"text/javascript\">");
  89. sb.append("$(function(){");
  90. sb.append("$(\"#" + formid + "\").Validform({");
  91. if(this.getTiptype()!=null && !"".equals(this.getTiptype())){
  92. sb.append("tiptype:"+this.getTiptype()+",");
  93. }else{
  94. sb.append("tiptype:1,");
  95. }
  96. // sb.append("tiptype:function(msg,o,cssctl){");
  97. // sb.append("if(!o.obj.is(\"form\")){");
  98. // sb.append(" var objtip=o.obj.parent().find(\".Validform_checktip\");");
  99. // sb.append(" cssctl(objtip,o.type);");
  100. // sb.append(" objtip.text(msg);");
  101. // sb.append(" var infoObj=o.obj.parent().find(\".Validform_checktip\");");
  102. // sb.append(" if(o.type==2){");
  103. // sb.append(" infoObj.hide();infoObj.show();");
  104. // sb.append(" infoObj.fadeOut(8000);");
  105. // sb.append(" }else{");
  106. // sb.append(" infoObj.hide();");
  107. // sb.append(" var left=o.obj.offset().left;");
  108. // sb.append(" var top=o.obj.offset().top;");
  109. // sb.append(" infoObj.css({ ");
  110. // sb.append(" left:left+85,");
  111. // sb.append(" top:top-10");
  112. // sb.append(" }).show().animate({");
  113. // sb.append(" top:top-5");
  114. // sb.append(" },200);infoObj.fadeOut(8000);");
  115. // sb.append(" }");
  116. // sb.append("}");
  117. // sb.append("},");
  118. sb.append("btnSubmit:\"#" + btnsub + "\",");
  119. sb.append("btnReset:\"#" + btnreset + "\",");
  120. sb.append("ajaxPost:true,");
  121. if (beforeSubmit != null) {
  122. sb.append("beforeSubmit:function(curform){var tag=false;");
  123. sb.append("return " + beforeSubmit );
  124. if(beforeSubmit.indexOf("(") < 0){
  125. sb.append("(curform);");
  126. }
  127. sb.append("},");
  128. }
  129. if (usePlugin != null) {
  130. StringBuffer passsb = new StringBuffer();
  131. if (usePlugin.indexOf("password") >= 0) {
  132. passsb.append("passwordstrength:{");
  133. passsb.append("minLen:6,");
  134. passsb.append("maxLen:18,");
  135. passsb.append("trigger:function(obj,error)");
  136. passsb.append("{");
  137. passsb.append("if(error)");
  138. passsb.append("{");
  139. passsb.append("obj.parent().next().find(\".Validform_checktip\").show();");
  140. passsb.append("obj.find(\".passwordStrength\").hide();");
  141. passsb.append("}");
  142. passsb.append("else");
  143. passsb.append("{");
  144. passsb.append("$(\".passwordStrength\").show();");
  145. passsb.append("obj.parent().next().find(\".Validform_checktip\").hide();");
  146. passsb.append("}");
  147. passsb.append("}");// trigger结尾
  148. passsb.append("}");// passwordstrength结尾
  149. }
  150. StringBuffer jqsb = new StringBuffer();
  151. if (usePlugin.indexOf("jqtransform") >= 0) {
  152. if (usePlugin.indexOf("password") >= 0) {
  153. sb.append(",");
  154. }
  155. jqsb.append("jqtransform :{selector:\"select\"}");
  156. }
  157. sb.append("usePlugin:{");
  158. if (usePlugin.indexOf("password") >= 0) {
  159. sb.append(passsb);
  160. }
  161. if (usePlugin.indexOf("jqtransform") >= 0) {
  162. sb.append(jqsb);
  163. }
  164. sb.append("},");
  165. }
  166. sb.append("callback:function(data){");
  167. if (dialog) {
  168. if(callback!=null&&callback.contains("@Override")){//复写默认callback
  169. sb.append(callback.replaceAll("@Override", "") + "(data);");
  170. }else{
  171. sb.append("var win = frameElement.api.opener;");
  172. //先判断是否成功,成功再刷新父页面,否则return false
  173. // 如果不成功,返回值接受使用data.msg. 原有的data.responseText会报null
  174. sb.append("if(data.success==true){frameElement.api.close();win.tip(data.msg);}else{if(data.responseText==''||data.responseText==undefined){$.messager.alert('错误', data.msg);$.Hidemsg();}else{try{var emsg = data.responseText.substring(data.responseText.indexOf('错误描述'),data.responseText.indexOf('错误信息')); $.messager.alert('错误',emsg);$.Hidemsg();}catch(ex){$.messager.alert('错误',data.responseText+\"\");$.Hidemsg();}} return false;}");
  175. //
  176. if (refresh) {
  177. sb.append("win.reloadTable();");
  178. }
  179. if (StringUtil.isNotEmpty(callback)) {
  180. sb.append("win."+ callback + "(data);");
  181. }
  182. }
  183. //失败tip不提示
  184. //sb.append("win.tip(data.msg);");
  185. } else {
  186. sb.append("" + callback + "(data);");
  187. }
  188. sb.append("}" + "});" + "});" + "</script>");
  189. sb.append("");
  190. sb.append("</form>");
  191. if ("div".equals(layout)) {
  192. sb.append("</div>");
  193. if (tabtitle != null) {
  194. String[] tabtitles = tabtitle.split(",");
  195. sb.append("<div id=\"navigation\" style=\"display: none;\">");
  196. sb.append("<ul>");
  197. for (String string : tabtitles) {
  198. sb.append("<li>");
  199. sb.append("<a href=\"#\">" + string + "</a>");
  200. sb.append("</li>");
  201. }
  202. sb.append("</ul>");
  203. sb.append("</div>");
  204. }
  205. sb.append("</div></div>");
  206. }
  207. out.print(sb.toString());
  208. out.flush();
  209. } catch (IOException e) {
  210. e.printStackTrace();
  211. }
  212. return EVAL_PAGE;
  213. }
  214. public void setUsePlugin(String usePlugin) {
  215. this.usePlugin = usePlugin;
  216. }
  217. public void setLayout(String layout) {
  218. this.layout = layout;
  219. }
  220. public void setBeforeSubmit(String beforeSubmit) {
  221. this.beforeSubmit = beforeSubmit;
  222. }
  223. public void setCallback(String callback) {
  224. this.callback = callback;
  225. }
  226. public String getTiptype() {
  227. return tiptype;
  228. }
  229. public void setTiptype(String tiptype) {
  230. this.tiptype = tiptype;
  231. }
  232. }