diff --git a/src/main/java/com/jfinal/template/stat/ast/Text.java b/src/main/java/com/jfinal/template/stat/ast/Text.java index 39d8f5f..7c81c7a 100644 --- a/src/main/java/com/jfinal/template/stat/ast/Text.java +++ b/src/main/java/com/jfinal/template/stat/ast/Text.java @@ -25,7 +25,7 @@ import com.jfinal.template.io.Writer; import com.jfinal.template.stat.Scope; /** - * Text 输出纯文本块以及使用 "#[[" 与 "]]#" 定义的原样输出块 + * Text 输出纯文本块以及使用 "#[[" 与 "]]#" 定义的原样输出块 */ public class Text extends Stat implements IWritable { @@ -57,18 +57,20 @@ public class Text extends Stat implements IWritable { return bytes; } - if (content != null) { - synchronized (this) { - if (content != null) { - bytes = content.toString().getBytes(charset); - content = null; - return bytes; - } + synchronized (this) { + if (bytes != null) { + return bytes; + } + + if (content != null) { + bytes = content.toString().getBytes(charset); + content = null; + return bytes; + } else { + bytes = new String(chars).getBytes(charset); + return bytes; } } - - bytes = new String(chars).getBytes(charset); - return bytes; } public char[] getChars() { @@ -76,23 +78,25 @@ public class Text extends Stat implements IWritable { return chars; } - if (content != null) { - synchronized (this) { - if (content != null) { - char[] charsTemp = new char[content.length()]; - content.getChars(0, content.length(), charsTemp, 0); - chars = charsTemp; - content = null; - return chars; - } + synchronized (this) { + if (chars != null) { + return chars; + } + + if (content != null) { + char[] charsTemp = new char[content.length()]; + content.getChars(0, content.length(), charsTemp, 0); + chars = charsTemp; + content = null; + return chars; + } else { + String strTemp = new String(bytes, charset); + char[] charsTemp = new char[strTemp.length()]; + strTemp.getChars(0, strTemp.length(), charsTemp, 0); + chars = charsTemp; + return chars; } } - - String strTemp = new String(bytes, charset); - char[] charsTemp = new char[strTemp.length()]; - strTemp.getChars(0, strTemp.length(), charsTemp, 0); - chars = charsTemp; - return chars; } public boolean isEmpty() {