From 92046f39585678dc38023e6f4f22d0988673f1c2 Mon Sep 17 00:00:00 2001
From: 吴学文 <wuxuewen@wuxuewendeMacBook-Pro.local>
Date: 星期日, 28 四月 2019 23:42:19 +0800
Subject: [PATCH] 添加删除小区楼信息

---
 WebService/src/main/java/com/java110/web/core/VueComponentElement.java |   59 ++++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 46 insertions(+), 13 deletions(-)

diff --git a/WebService/src/main/java/com/java110/web/core/VueComponentElement.java b/WebService/src/main/java/com/java110/web/core/VueComponentElement.java
index 6b26d2e..1ea09e4 100644
--- a/WebService/src/main/java/com/java110/web/core/VueComponentElement.java
+++ b/WebService/src/main/java/com/java110/web/core/VueComponentElement.java
@@ -1,9 +1,16 @@
 package com.java110.web.core;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.thymeleaf.Arguments;
-import org.thymeleaf.dom.*;
+import org.thymeleaf.dom.Document;
+import org.thymeleaf.dom.Element;
+import org.thymeleaf.dom.Macro;
+import org.thymeleaf.dom.Node;
 import org.thymeleaf.processor.element.AbstractMarkupSubstitutionElementProcessor;
+import org.thymeleaf.util.DOMUtils;
 
+import java.io.StringReader;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -13,40 +20,66 @@
  */
 public class VueComponentElement extends AbstractMarkupSubstitutionElementProcessor {
 
+    private static Logger logger = LoggerFactory.getLogger(VueComponentElement.class);
+
+    private static final String DIV_PROPERTY_COMPONENT = "data-component";
+
+
     protected VueComponentElement(String elementName) {
         super(elementName);
     }
 
     @Override
     protected List<Node> getMarkupSubstitutes(Arguments arguments, Element element) {
+
+        //logger.debug("arg:{},element:{}", JSONObject.toJSONString(arguments),element.getAttributeValue("name"));
         List<Node> nodes = new ArrayList<>();
         //鑾峰彇妯℃澘鍚嶇О
         String componentName = element.getAttributeValue("name");
-        String html = VueComponentTemplate.findTemplateByComponentCode(componentName+"."+VueComponentTemplate.COMPONENT_HTML);
-        if(html == null){
-            throw new RuntimeException("鍦ㄧ紦瀛樹腑鏈壘鍒扮粍浠躲��"+componentName+"銆�");
+        logger.debug("姝e湪瑙f瀽缁勪欢{}", componentName);
+        String html = VueComponentTemplate.findTemplateByComponentCode(componentName + "." + VueComponentTemplate.COMPONENT_HTML);
+        if (html == null) {
+            throw new RuntimeException("鍦ㄧ紦瀛樹腑鏈壘鍒扮粍浠躲��" + componentName + "銆�");
         }
-        Node nodeHtml = new Macro(html);
-        nodes.add(nodeHtml);
+        //List<Node> tmpNodes = DOMUtils.getHtml5DOMFor(new StringReader(html)).getChildren();
+        Document tmpDoc = DOMUtils.getLegacyHTML5DOMFor(new StringReader(html));
+        List<Node> tmpNodes = tmpDoc.getChildren();
+
+        addDataComponent(tmpDoc, componentName);
+        for (Node tmpNode : tmpNodes) {
+            nodes.add(tmpNode);
+        }
         //css
-        String css = VueComponentTemplate.findTemplateByComponentCode(componentName+"."+VueComponentTemplate.COMPONENT_CSS);
-        if(css != null){
-            css = "<style type=\"text/css\">" + css +"</style>";
+        String css = VueComponentTemplate.findTemplateByComponentCode(componentName + "." + VueComponentTemplate.COMPONENT_CSS);
+        if (css != null) {
+            css = "<style type=\"text/css\">" + css + "</style>";
             Node nodeCss = new Macro(css);
             nodes.add(nodeCss);
         }
 
-        //css
-        String js = VueComponentTemplate.findTemplateByComponentCode(componentName+"."+VueComponentTemplate.COMPONENT_JS);
-        if(js != null){
-            js = "<script type=\"text/javascript\">" + js +"</script>";
+        //js
+        String js = VueComponentTemplate.findTemplateByComponentCode(componentName + "." + VueComponentTemplate.COMPONENT_JS);
+        if (js != null) {
+            js = "<script type=\"text/javascript\">//<![CDATA[ \n" + js + "//]]>\n</script>";
             Node nodeJs = new Macro(js);
             nodes.add(nodeJs);
         }
 
+
         return nodes;
     }
 
+    /**
+     * 鍔犲叆缁勪欢鍚嶇О鍒� HTML涓� 鏂逛究瀹氫綅闂
+     *
+     * @param tmpDoc        椤甸潰鑺傜偣
+     * @param componentCode 缁勪欢缂栫爜
+     */
+    private void addDataComponent(Document tmpDoc, String componentCode) {
+        Element tmpElement = tmpDoc.getFirstElementChild();
+        tmpElement.setAttribute(DIV_PROPERTY_COMPONENT, componentCode);
+    }
+
     @Override
     public int getPrecedence() {
         return 1000;

--
Gitblit v1.8.0