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

📄 cmsxmlformtemplatefile.java

📁 OpenCms 是一个J2EE的产品
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        }

        // If the radio button method returned a value, use it for preselecting an option
        if (returnObject != null) {
            selectedOption = returnObject.intValue();
        }

        // process the vectors with the elelmetns of the radio buttons to be displayed.
        int numValues = values.size();
        CmsXmlTemplateFile radiodef = new CmsXmlTemplateFile(m_cms, CmsWorkplaceDefault.C_VFS_PATH_DEFAULT_INTERNAL + "HTMLFormDefs");
        if (radioClass == null || "".equals(radioClass)) {
            radiodef.setData(CmsWorkplaceDefault.C_RADIO_CLASS, "");
        } else {
            radiodef.setData(CmsWorkplaceDefault.C_RADIO_CLASSNAME, radioClass);
            radiodef.setData(CmsWorkplaceDefault.C_RADIO_CLASS, radiodef.getProcessedData(CmsWorkplaceDefault.C_TAG_RADIO_CLASS));
        }
        for (int i = 0; i < numValues; i++) {

            // Set values for this radiobutton entry
            radiodef.setData(CmsWorkplaceDefault.C_RADIO_RADIONAME, radioName);
            radiodef.setData(CmsWorkplaceDefault.C_RADIO_NAME, (String)names.elementAt(i));
            radiodef.setData(CmsWorkplaceDefault.C_RADIO_LINK, (String)values.elementAt(i));

            // Check, if this should be the preselected option
            if (i == selectedOption) {
                radiodef.setData(CmsWorkplaceDefault.C_RADIO_SELECTEDENTRY, radiodef.getDataValue("radiobuttons." + CmsWorkplaceDefault.C_RADIO_SELECTEDOPTION));
            } else {
                radiodef.setData(CmsWorkplaceDefault.C_RADIO_SELECTEDENTRY, "");
            }

            // Now get output for this option
            if (radioOrder.equals("col")) {

                // Buttons should be displayed in one column
                result.append(radiodef.getProcessedDataValue(CmsWorkplaceDefault.C_TAG_RADIO_COLENTRY, callingObject));
            } else {

                // Buttons should be displayed in a row.
                result.append(radiodef.getProcessedDataValue(CmsWorkplaceDefault.C_TAG_RADIO_ROWENTRY, callingObject));
            }
        }
        return result.toString();
    }

    /**
     * Handles any occurence of the special XML tag <code>&lt;SELECT&gt;</code> for
     * generating HTML form select boxes.
     * <P>
     * The definition of a HTML selectbox will be taken from I_CmsWpConstants.C_VFS_PATH_DEFAULT_INTERNAL + "HTMLFormDefs".
     * If the file is missing, this method will crash. Ensure this file is created and filled
     * with all required XML tags.
     * <P>
     * Select boxes can be generated by adding the special XML tag
     * <code>&lt;SELECT class="myClass" method="myMethod" name="myName" onchange="..." size="..."/&gt;</code>
     * to the template file. This tag will be replaced with the correspondig select box
     * while processing the template file. The <code>class</code> parameter is optional and
     * The <code>method</code> parameter will be used to look up a user defined method
     * in the template class assigned to the template file. This method should look like
     * <br/>
     * <code>public Integer myMethod(CmsObject cms, Vector names, Vector values, Hashtable parameters)</code><br/>
     * and will be used to get the content of the requested select box group. The vectors <code>names</code>
     * and <code>values</code> should be filled with the appropriate values. The return value should be an
     * Integer containing the pre-selected option or -1, if no value should be pre-selected.
     *
     * @param n XML element containing the current special workplace tag
     * @param callingObject reference to the calling object
     * @param userObj hashtable containig all user parameters
     * @return the definition of the select tag
     * @throws CmsException if something goes wrong
     */
    public Object handleSelectTag(Element n, Object callingObject, Object userObj) throws CmsException {

        Hashtable parameters = (Hashtable)userObj;

        // Here the different select box options will be stored
        Vector values = new Vector();
        Vector names = new Vector();




        // StringBuffer for the generated output *
        StringBuffer result = new StringBuffer();

        // Read selectbox parameters
        String selectClass = n.getAttribute(CmsWorkplaceDefault.C_SELECTBOX_CLASS);
        String selectName = n.getAttribute(CmsWorkplaceDefault.C_SELECTBOX_NAME);
        String selectMethod = n.getAttribute(CmsWorkplaceDefault.C_SELECTBOX_METHOD);
        String selectWidth = n.getAttribute(CmsWorkplaceDefault.C_SELECTBOX_WIDTH);
        String selectOnchange = n.getAttribute(CmsWorkplaceDefault.C_SELECTBOX_ONCHANGE);
        String selectSize = n.getAttribute(CmsWorkplaceDefault.C_SELECTBOX_SIZE);
        if ((selectSize == null) || (selectSize.length() == 0)) {
            selectSize = "1";
        }

        // Get input definition file
        CmsXmlTemplateFile inputdef = new CmsXmlTemplateFile(m_cms, CmsWorkplaceDefault.C_VFS_PATH_DEFAULT_INTERNAL + "HTMLFormDefs");

        // Set the prefix string of the select box
        if (selectClass == null || "".equals(selectClass)) {
            inputdef.setData(CmsWorkplaceDefault.C_SELECTBOX_CLASS, "");
        } else {
            inputdef.setData(CmsWorkplaceDefault.C_SELECTBOX_CLASSNAME, selectClass);
            inputdef.setData(CmsWorkplaceDefault.C_SELECTBOX_CLASS, inputdef.getProcessedData(CmsWorkplaceDefault.C_TAG_SELECTBOX_CLASS));
        }
        if (selectWidth == null || "".equals(selectWidth)) {
            inputdef.setData(CmsWorkplaceDefault.C_SELECTBOX_WIDTH, "");
        } else {
            inputdef.setData(CmsWorkplaceDefault.C_SELECTBOX_WIDTHNAME, selectWidth);
            inputdef.setData(CmsWorkplaceDefault.C_SELECTBOX_WIDTH, inputdef.getProcessedData(CmsWorkplaceDefault.C_TAG_SELECTBOX_WIDTH));
        }
        inputdef.setData(CmsWorkplaceDefault.C_SELECTBOX_NAME, selectName);
        inputdef.setData(CmsWorkplaceDefault.C_SELECTBOX_ONCHANGE, selectOnchange);
        inputdef.setData(CmsWorkplaceDefault.C_SELECTBOX_SIZE, selectSize);

        // move the prefix string of the select box to the result StringBuffer
        result.append(inputdef.getProcessedDataValue(CmsWorkplaceDefault.C_TAG_SELECTBOX_START));

        // call the method for generating listbox elements
        Method groupsMethod = null;
        int selectedOption = 0;
        try {
            groupsMethod = callingObject.getClass().getMethod(selectMethod, new Class[] {
                CmsObject.class, Vector.class, Vector.class, Hashtable.class
            });
            selectedOption = ((Integer)groupsMethod.invoke(callingObject, new Object[] {
                m_cms, values, names, parameters
            })).intValue();
        } catch (NoSuchMethodException exc) {

            // The requested method was not found.
            throwException("Could not find method " + selectMethod + " in calling class " + callingObject.getClass().getName()
                    + " for generating select box content.", CmsLegacyException.C_NOT_FOUND);
        } catch (InvocationTargetException targetEx) {

            // the method could be invoked, but throwed a exception
            // itself. Get this exception and throw it again.
            Throwable e = targetEx.getTargetException();
            if (!(e instanceof CmsException)) {

                // Only print an error if this is NO CmsException
                throwException("User method " + selectMethod + " in calling class " + callingObject.getClass().getName()
                        + " throwed an exception. " + e, CmsLegacyException.C_UNKNOWN_EXCEPTION);
            } else {

                // This is a CmsException
                // Error printing should be done previously.
                throw (CmsException)e;
            }
        } catch (Exception exc2) {
            throwException("User method " + selectMethod + " in calling class " + callingObject.getClass().getName()
                    + " was found but could not be invoked. " + exc2, CmsLegacyException.C_XML_NO_USER_METHOD);
        }

        // check the returned elements and put them into option tags.
        // The element with index "selectedOption" has to get the "selected" tag.
        int numValues = values.size();
        for (int i = 0; i < numValues; i++) {
            inputdef.setData(CmsWorkplaceDefault.C_SELECTBOX_OPTIONNAME, (String)names.elementAt(i));
            inputdef.setData(CmsWorkplaceDefault.C_SELECTBOX_OPTIONVALUE, (String)values.elementAt(i));
            if (i == selectedOption) {
                result.append(inputdef.getProcessedDataValue(CmsWorkplaceDefault.C_TAG_SELECTBOX_SELOPTION));
            } else {
                result.append(inputdef.getProcessedDataValue(CmsWorkplaceDefault.C_TAG_SELECTBOX_OPTION));
            }
        }

        // get the processed selectbox end sequence.
        result.append(inputdef.getProcessedDataValue(CmsWorkplaceDefault.C_TAG_SELECTBOX_END));
        return result.toString();
    }

    /**
     * Registers the special tags for processing with
     * processNode().
     */
    private void registerMyTags() {
        super.registerTag("SELECT", CmsXmlFormTemplateFile.class, "handleSelectTag", C_REGISTER_MAIN_RUN);
        super.registerTag("RADIOBUTTON", CmsXmlFormTemplateFile.class, "handleRadiobuttonTag", C_REGISTER_MAIN_RUN);
        // just to be sure this is in the workplace view always aktiv
        super.registerTag("ELEMENT", CmsXmlTemplateFile.class, "handleElementTag", C_REGISTER_MAIN_RUN);
    }
}

⌨️ 快捷键说明

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