⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 htmllinkrendererbase.java

📁 一个使用struts+hibernate+spring开发的完的网站源代码。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        }        UIForm nestingForm = null;        String formName;        DummyFormResponseWriter dummyFormResponseWriter;        if (parent != null)        {            //link is nested inside a form            nestingForm = (UIForm)parent;            formName = nestingForm.getClientId(facesContext);            dummyFormResponseWriter = null;        }        else        {            //not nested in form, we must add a dummy form at the end of the document            formName = DummyFormUtils.DUMMY_FORM_NAME;            dummyFormResponseWriter = DummyFormUtils.getDummyFormResponseWriter(facesContext);            dummyFormResponseWriter.setWriteDummyForm(true);        }        StringBuffer onClick = new StringBuffer();        String commandOnclick;        if (component instanceof HtmlCommandLink)        {            commandOnclick = ((HtmlCommandLink)component).getOnclick();        }        else        {            commandOnclick = (String)component.getAttributes().get(HTML.ONCLICK_ATTR);        }        if (commandOnclick != null)        {            onClick.append(commandOnclick);            onClick.append(';');        }        //call the clear_<formName> method        onClick.append(HtmlRendererUtils.getClearHiddenCommandFormParamsFunctionName(formName)).append("();");        String jsForm = "document.forms['" + formName + "']";        if (MyfacesConfig.getCurrentInstance(facesContext.getExternalContext()).isAutoScroll())        {            JavascriptUtils.appendAutoScrollAssignment(onClick, formName);        }        //add id parameter for decode        String hiddenFieldName = HtmlRendererUtils.getHiddenCommandLinkFieldName(formName);        onClick.append(jsForm);        onClick.append(".elements['").append(hiddenFieldName).append("']");        onClick.append(".value='").append(clientId).append("';");        if (nestingForm != null)        {            HtmlFormRendererBase.addHiddenCommandParameter(nestingForm, hiddenFieldName);        }        else        {            dummyFormResponseWriter.addDummyFormParameter(hiddenFieldName);        }        //add child parameters        for (Iterator it = component.getChildren().iterator(); it.hasNext(); )        {            UIComponent child = (UIComponent)it.next();            if (child instanceof UIParameter)            {                String name = ((UIParameter)child).getName();                Object value = ((UIParameter)child).getValue();                renderLinkParameter(dummyFormResponseWriter, name, value, onClick, jsForm, nestingForm);            }        }        // target        String target = ((HtmlCommandLink)component).getTarget();        if (target != null && target.trim().length() > 0) {            onClick.append(jsForm);            onClick.append(".target='");            onClick.append(target);            onClick.append("';");        }				// onSubmit		onClick.append("if("+jsForm+".onsubmit){"+jsForm+".onsubmit();}");		        //submit        onClick.append(jsForm);        onClick.append(".submit();return false;");  //return false, so that browser does not handle the click        writer.startElement(HTML.ANCHOR_ELEM, component);        writer.writeURIAttribute(HTML.HREF_ATTR, "#", null);        writer.writeAttribute(HTML.ONCLICK_ATTR, onClick.toString(), null);    }    protected void renderNonJavaScriptAnchorStart(FacesContext facesContext,                                                  ResponseWriter writer,                                                  UIComponent component,                                                  String clientId)        throws IOException    {        ViewHandler viewHandler = facesContext.getApplication().getViewHandler();        String viewId = facesContext.getViewRoot().getViewId();        String path = viewHandler.getActionURL(facesContext, viewId);        StringBuffer hrefBuf = new StringBuffer(path);        //add clientId parameter for decode        if (path.indexOf('?') == -1)        {            hrefBuf.append('?');        }        else        {            hrefBuf.append('&');        }        String hiddenFieldName = HtmlRendererUtils.getHiddenCommandLinkFieldName(HtmlRendererUtils.getFormName(component, facesContext));        hrefBuf.append(hiddenFieldName);        hrefBuf.append('=');        hrefBuf.append(clientId);        if (component.getChildCount() > 0)        {            addChildParametersToHref(component, hrefBuf,                                     false, //not the first url parameter                                     writer.getCharacterEncoding());        }        StateManager stateManager = facesContext.getApplication().getStateManager();        if (stateManager.isSavingStateInClient(facesContext))        {            hrefBuf.append("&");            hrefBuf.append(URL_STATE_MARKER);        }        String href = facesContext.getExternalContext().encodeActionURL(hrefBuf.toString());        writer.startElement(HTML.ANCHOR_ELEM, component);        writer.writeURIAttribute(HTML.HREF_ATTR,                                 facesContext.getExternalContext().encodeActionURL(href),                                 null);    }    private void addChildParametersToHref(UIComponent linkComponent,                                          StringBuffer hrefBuf,                                          boolean firstParameter,                                          String charEncoding)            throws IOException    {        for (Iterator it = linkComponent.getChildren().iterator(); it.hasNext(); )        {            UIComponent child = (UIComponent)it.next();            if (child instanceof UIParameter)            {                String name = ((UIParameter)child).getName();                Object value = ((UIParameter)child).getValue();                addParameterToHref(name, value, hrefBuf, firstParameter, charEncoding);                firstParameter = false;            }        }    }    protected void renderOutputLinkStart(FacesContext facesContext, UIOutput output)            throws IOException    {        ResponseWriter writer = facesContext.getResponseWriter();        //calculate href        String href = RendererUtils.getStringValue(facesContext, output);        if (output.getChildCount() > 0)        {            StringBuffer hrefBuf = new StringBuffer(href);            addChildParametersToHref(output, hrefBuf,                                     (href.indexOf('?') == -1), //first url parameter?                                     writer.getCharacterEncoding());            href = hrefBuf.toString();        }        href = facesContext.getExternalContext().encodeResourceURL(href);    //TODO: or encodeActionURL ?        //write anchor        writer.startElement(HTML.ANCHOR_ELEM, output);        writer.writeAttribute(HTML.ID_ATTR, output.getClientId(facesContext), null);        writer.writeURIAttribute(HTML.HREF_ATTR, href, null);        HtmlRendererUtils.renderHTMLAttributes(writer, output, HTML.ANCHOR_PASSTHROUGH_ATTRIBUTES);        writer.flush();    }    private void renderLinkParameter(DummyFormResponseWriter dummyFormResponseWriter,                                     String name,                                     Object value,                                     StringBuffer onClick,                                     String jsForm,                                     UIForm nestingForm)    {        if (name == null)        {            throw new IllegalArgumentException("Unnamed parameter value not allowed within command link.");        }        onClick.append(jsForm);        onClick.append(".elements['").append(name).append("']");        //UIParameter is no ValueHolder, so no conversion possible        String strParamValue = value != null ? value.toString() : ""; //TODO: Use Converter?        onClick.append(".value='").append(strParamValue).append("';");        if (nestingForm != null)        {            //renderHiddenParam(writer, name);            HtmlFormRendererBase.addHiddenCommandParameter(nestingForm, name);        }        else        {            dummyFormResponseWriter.addDummyFormParameter(name);        }    }    private static void addParameterToHref(String name, Object value, StringBuffer hrefBuf, boolean firstParameter, String charEncoding)            throws UnsupportedEncodingException    {        if (name == null)        {            throw new IllegalArgumentException("Unnamed parameter value not allowed within command link.");        }        hrefBuf.append(firstParameter ? '?' : '&');        hrefBuf.append(URLEncoder.encode(name, charEncoding));        hrefBuf.append('=');        if (value != null)        {            //UIParameter is no ConvertibleValueHolder, so no conversion possible            hrefBuf.append(URLEncoder.encode(value.toString(), charEncoding));        }    }    protected void renderLinkEnd(FacesContext facesContext, UIComponent component)            throws IOException    {        ResponseWriter writer = facesContext.getResponseWriter();        // force separate end tag        writer.writeText("", null);        writer.endElement(HTML.ANCHOR_ELEM);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -