浏览代码

jfinal 4.6

James 6 年之前
父节点
当前提交
b7928c1341

+ 10 - 4
src/main/java/com/jfinal/core/Controller.java

@@ -1143,9 +1143,15 @@ public abstract class Controller {
 	}
 	
 	/**
-	 * Render with text and content type.
-	 * <p>
-	 * Example: renderText("&lt;user id='5888'&gt;James&lt;/user&gt;", "application/xml");
+	 * 响应 text 文本并指定 content type,例如: "text/xml"、"application/javascript"
+	 * 
+	 * 其中 "text/xml"、"application/javascript"、"application/json"、"text/html"
+	 * 从 jfinal 4.6 版本开始可以简写为 "xml"、"js"、"json"、"html"
+	 * 
+	 * <pre>
+	 * 例子:
+	 *    renderText("&lt;user id='5888'&gt;James&lt;/user&gt;", "xml");
+	 * </pre>
 	 */
 	public void renderText(String text, String contentType) {
 		render = renderManager.getRenderFactory().getTextRender(text, contentType);
@@ -1274,7 +1280,7 @@ public abstract class Controller {
 	}
 	
 	/**
-	 * Render with xml view using freemarker.
+	 * Render with xml view using enjoy template.
 	 */
 	public void renderXml(String view) {
 		render = renderManager.getRenderFactory().getXmlRender(view);

+ 40 - 0
src/main/java/com/jfinal/render/ContentType.java

@@ -16,6 +16,9 @@
 
 package com.jfinal.render;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * ContentType
  * <br>
@@ -44,5 +47,42 @@ public enum ContentType {
 	public String toString() {
 		return value;
 	}
+	
+	// ---------
+	
+	private static final Map<String, ContentType> mapping = initMapping();
+	
+	/**
+	 * 将简写的文本射到 context type,方便在 Controller.renderText(String, String)
+	 * 之中取用,例如:
+	 *   renderText(..., "xml")
+	 *   比下面的用法要省代码
+	 *   renderText(..., "text/xml")
+	 */
+	private static Map<String, ContentType> initMapping() {
+		Map<String, ContentType> ret = new HashMap<>();
+		
+		ret.put("text", TEXT);
+		ret.put("plain", TEXT);
+		ret.put("html", HTML);
+		ret.put("xml", XML);
+		ret.put("json", JSON);
+		ret.put("javascript", JAVASCRIPT);
+		ret.put("js", JAVASCRIPT);
+		
+		ret.put("TEXT", TEXT);
+		ret.put("PLAIN", TEXT);
+		ret.put("HTML", HTML);
+		ret.put("XML", XML);
+		ret.put("JSON", JSON);
+		ret.put("JAVASCRIPT", JAVASCRIPT);
+		ret.put("JS", JAVASCRIPT);
+		
+		return ret;
+	}
+	
+	public static ContentType parse(String str) {
+		return mapping.get(str);
+	}
 }
 

+ 4 - 1
src/main/java/com/jfinal/render/TextRender.java

@@ -37,7 +37,10 @@ public class TextRender extends Render {
 	
 	public TextRender(String text, String contentType) {
 		this.text = text;
-		this.contentType = contentType;
+		
+		// 支持简洁写法,例如:xml、js
+		ContentType ct = ContentType.parse(contentType);
+		this.contentType = (ct != null ? ct.value() : contentType);
 	}
 	
 	public TextRender(String text, ContentType contentType) {