1 34 35 36 package com.micronova.jsp.tag; 37 38 import javax.servlet.*; 39 import java.io.*; 40 import com.micronova.util.*; 41 import com.micronova.util.servlet.*; 42 43 44 45 public class PostDataTag extends YuzuTag 46 { 47 protected String _contentTypePrefix; 48 protected String _encoding; 49 50 protected final String DEFAULTENCODING = "*iso-8859-1"; 51 52 protected void init() 53 { 54 super.init(); 55 56 _contentTypePrefix = null; 57 _encoding = null; 58 } 59 60 public void setContentTypePrefix(Object expression) throws Exception 61 { 62 _contentTypePrefix = (String )evaluateAttribute("contentTypePrefix", expression, String .class); 63 } 64 65 public void setEncoding(Object expression) throws Exception 66 { 67 _encoding = (String )evaluateAttribute("encoding", expression, String .class); 68 } 69 70 71 72 protected boolean doesImport(Object value) 73 { 74 return false; 75 } 76 77 protected Object prepareValue(Object tagValue) throws Exception 78 { 79 tagValue = super.prepareValue(tagValue); 80 81 if (tagValue == null) 82 { 83 ServletRequest request = pageContext.getRequest(); 84 85 if (!(request instanceof DispatchHttpServletRequest)) 86 { 87 String contentTypePrefix = _contentTypePrefix; 88 89 boolean isContentMatched = (contentTypePrefix == null); 90 91 if (!isContentMatched) 92 { 93 String contentType = request.getContentType(); 94 95 isContentMatched = ((contentType != null) && contentType.startsWith(contentTypePrefix)); 96 } 97 98 if (isContentMatched) 99 { 100 tagValue = request; 101 } 102 } 103 } 104 105 return tagValue; 106 } 107 108 109 protected Object doDefault(Object value, Object defaultValue, String test) throws Exception 110 { 111 ServletRequest request = pageContext.getRequest(); 112 113 if (value == request) 114 { 115 String requestEncoding = request.getCharacterEncoding(); 116 117 String encoding = _encoding; 118 119 if (encoding == null) 120 { 121 encoding = DEFAULTENCODING; 122 } 123 124 if (encoding.startsWith("*")) 125 { 126 if (requestEncoding != null) 127 { 128 encoding = requestEncoding; 129 } 130 else 131 { 132 encoding = encoding.substring(1); 133 } 134 } 135 136 Reader reader = null; 137 138 try 139 { 140 reader = new InputStreamReader(request.getInputStream(), encoding); 141 142 value = new String (IOUtil.readAll(reader)); 143 } 144 catch (Exception e) 145 { 146 throw e; 147 } 148 } 149 150 return super.doDefault(value, defaultValue, test); 151 } 152 } 153 | Popular Tags |