日期:2014-05-16 浏览次数:20367 次
package component; import javax.faces.component.UIInput; import javax.faces.component.ValueHolder; public class DirectorySearch_DojoImp extends UIInput implements ValueHolder { @Override public String getFamily() { return "DirectoryFamily"; } }
package renderer; import java.io.IOException; import javax.faces.component.UIComponent; import javax.faces.context.ExternalContext; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; import javax.faces.render.Renderer; import phaselistener.DataProviderPhListener; /** * * @author Administrator */ public class DirectorySearchRenderer extends Renderer { public DirectorySearchRenderer() { } @Override public void encodeBegin(FacesContext context, UIComponent component) throws IOException { String clientId = component.getClientId(context); renderStyle(context, component); //渲染AJAX脚本 encodeAjaxJavascript(context, clientId + ":grid", component); //encodeInputField用来渲染核心用户界面元素. encodeInputField(context, clientId, component); } public void renderStyle(FacesContext context, UIComponent component) throws IOException { ResponseWriter writer = context.getResponseWriter(); writer.write("\n"); writer.startElement("style", component); writer.writeAttribute("type", "text/css", null); writer.write("\n"); writer.write("@import '../js/MyDojo/dojo/grid/_grid/Grid.css';\n"); writer.write("@import '../js/MyDojo/dojo/themes/tundra/tundra.css'';\n"); writer.endElement("style"); writer.write("\n"); } public void encodeInputField(FacesContext context, String clientId, UIComponent component) throws IOException { // render a standard HTML input field ResponseWriter writer = context.getResponseWriter(); writer.write("\n"); writer.startElement("p", component); writer.startElement("input", component); writer.writeAttribute("type", "text", null); writer.writeAttribute("id", clientId, "clientId"); writer.writeAttribute("size", "20", null); writer.writeAttribute("onkeyup", "lookup('" + clientId + "');", null); writer.endElement("input"); writer.endElement("p"); //同时在渲染一个DIV.<div id = "searchField:table"></div> 此div为table的插入位置 // writer.startElement("div", this); // writer.writeAttribute("id", clientId + ":table", null); // writer.endElement("div"); //<div id="commentww" dojotype="dijit.layout.ContentPane" style="width: 600px; height: 300px; // padding: 0px; font-size:12px;"> //</div> writer.startElement("div", component); writer.writeAttribute("id", clientId + ":grid", null); writer.writeAttribute("dojotype", "dijit.layout.ContentPane", null); writer.writeAttribute("style", "width: 600px; height: 300px; padding: 0px; font-size:12px;", null); writer.endElement("div"); } public void encodeAjaxJavascript(FacesContext context, String clientId, UIComponent component) throws IOException { ResponseWriter writer = context.getResponseWriter(); ExternalContext extContext = context.getExternalContext(); // render Ajax enabled Javascript only once if (!extContext.getRequestMap().containsKey("ajaxflag.ajaxScript")) { extContext.getRequestMap().put("ajaxflag.ajaxScript", Boolean.TRUE); writer.startElement("script", component); writer.writeAttribute("type", "text/javascript", null); writer.writeAttribute("src", DataProviderPhListener.RENDER_SCRIPT