package railo.runtime.tag; import javax.servlet.jsp.tagext.Tag; import railo.commons.io.res.util.ResourceUtil; import railo.runtime.exp.ApplicationException; import railo.runtime.ext.tag.TagImpl; /** * Required for cfhttp POST operations, cfhttpparam is used to specify the parameters necessary to * build a cfhttp POST. * * * **/ public final class HttpParam extends TagImpl { HttpParamBean param=new HttpParamBean(); /** * Applies to FormField and CGI types; ignored for all other types. * Specifies whether to URLEncode the form field or header. * @param encoded */ public void setEncoded(boolean encoded) { param.setEncoded(encoded); } /** * Applies to File type; invalid for all other types. * Specifies the MIME media type of the file contents. * The content type can include an identifier for the character encoding of the file; * for example, text/html; charset=ISO-8859-1 indicates that the file is HTML text in * the ISO Latin-1 character encoding. * @param mimetype */ public void setMimetype(String mimetype) { param.setMimeType(mimetype); } /** set the value value * Specifies the value of the URL, FormField, Cookie, File, or CGI variable being passed. * @param value value to set **/ public void setValue(Object value) { param.setValue(value); } /** set the value type * The transaction type. * @param type value to set **/ public void setType(String type) { param.setType(type); } /** set the value file * Required for type = "File". * @param file value to set **/ public void setFile(String file) { param.setFile(ResourceUtil.toResourceNotExisting(pageContext,file)); } /** set the value name * A variable name for the data being passed. * @param name value to set **/ public void setName(String name) { param.setName(name); } @Override public int doStartTag() throws ApplicationException { if(param.getName()==null && (!"body".equalsIgnoreCase(param.getType()) && !"xml".equalsIgnoreCase(param.getType()))) { throw new ApplicationException("attribute [name] is required for tag [httpparam] if type is not [body or xml]"); } // get HTTP Tag Tag parent=getParent(); while(parent!=null && !(parent instanceof Http)) { parent=parent.getParent(); } if(parent instanceof Http) { Http http = (Http)parent; http.setParam(param); } else { throw new ApplicationException("Wrong Context, tag HttpParam must be inside a Http tag"); } return SKIP_BODY; } @Override public int doEndTag() { return EVAL_PAGE; } @Override public void release() { super.release(); param=new HttpParamBean(); } }