有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java<cms:include不带<p>标记

有没有类似<cms:include type="OpenCmsString" element="text1" />的解决方案?因为我的<cms:include element="text1">的输出总是给我带有<p>标记的数据

感谢您的帮助


共 (1) 个答案

  1. # 1 楼答案

    我曾经为此创建了自己的标签(StripPTag)。您可以编译该类并将其包装在jar文件中,然后将其部署到opencms webapp lib文件夹中

    package com.opencmsserver.taglib;
    
    import org.opencms.flex.CmsFlexController;
    import org.opencms.jsp.Messages;
    import org.opencms.main.CmsLog;
    
    import javax.servlet.ServletRequest;
    import javax.servlet.jsp.JspException;
    import javax.servlet.jsp.tagext.BodyTagSupport;
    
    import org.apache.commons.logging.Log;
    
    /**
     * Removes the <p> tag from the surrounded content, 
     * because FCKEditor always add <p> tag to content at 
     * the beginning and end when using the html editor component  
     *
     * @author  Mathias Lin 
     * 
     * @version $Revision: 0.1 $ 
     * 
     * @since 0.4 
     */
    public class StripPTag extends BodyTagSupport {
    
        /** Serial version UID required for safe serialization. */
        private static final long serialVersionUID = -2361021288258405388L;
    
        /** The log object for this class. */
        private static final Log LOG = CmsLog.getLog(StripPTag.class);
    
    
        /**
         * @see javax.servlet.jsp.tagext.Tag#doEndTag()
         * @return EVAL_PAGE
         * @throws JspException in case soemthing goes wrong
         */
        public int doEndTag() throws JspException {
    
            ServletRequest req = pageContext.getRequest();
    
            // This will always be true if the page is called through OpenCms 
            if (CmsFlexController.isCmsRequest(req)) {
                try {
                    // Get link-string from the body and reset body 
                    String content = getBodyContent().getString();
                    content = content.replaceAll("<p>", "");
                    content = content.replaceAll("</p>", "");
                    getBodyContent().clear();
                    getBodyContent().print(content);
                    getBodyContent().writeOut(pageContext.getOut());
    
                } catch (Exception ex) {
                    if (LOG.isErrorEnabled()) {
                        LOG.error("Failed using StripPTag. ", ex);
                    }
                    throw new JspException(ex);
                }
            }
            return EVAL_PAGE;
        }
    }
    

    还有我自己的OpenCMS服务器。tld:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    
    <!DOCTYPE taglib
      PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
      "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
    
    <taglib>
        <tlib-version>0.1</tlib-version>
        <jsp-version>1.2</jsp-version>
        <short-name>opencmsserver</short-name>
        <uri>http://www.opencmsserver.com/taglib/cms</uri>
        <display-name>OpenCms JSP standard taglib</display-name>
        <description>
            Additional OpenCms Tags
            Developed by SYSVISION Ltd. / Mathias Lin (info@opencmsserver.com)
        </description>
    
        <tag>
            <name>stripPTag</name>
            <tag-class>com.opencmsserver.taglib.StripPTag</tag-class>
            <body-content>JSP</body-content>
            <description>
                This tag stripts the p-tag from the surrounded content.
            </description>
        </tag>         
    
    </taglib>
    

    然后我在我的网站上引用它。xml:

    <!  Begin: Custom SYSVISION OpenCmsServer lib  >      
    <taglib>
        <taglib-uri>http://www.opencmsserver.com/taglib/opencmsserver</taglib-uri>
    <taglib-location>/WEB-INF/opencmsserver.tld</taglib-location>
    </taglib>
    

    在jsp中,您只需用以下内容将其包围:

    <opencmsserver:stripPTag>Some content<p>with a paragraph</opencmsserver:stripPTag>
    

    (别忘了在jsp标题部分中引用这个标记库)