JSe7en

          Java上CKEditor集成指南

          Java上CKEditor集成指南

          內(nèi)容

          系統(tǒng)需求

          請(qǐng)注意,你至少需要JRE 1.4和Servlet的2.5/JSP 2.1使用整合。

          安裝

          將CKEditor添加到您的應(yīng)用程序,有兩步的過程:

          1. 下載獨(dú)立CKEditor和放置在Web應(yīng)用程序目錄。
          2. 下載并安裝服務(wù)器端集成(用于Java CKEditor)。

          添加客戶端CKEditor

          官方CKEditor下載頁面下載CKEditor的最新版本。將它放置在你的web應(yīng)用程序的目錄里。

          添加標(biāo)簽庫(ckeditor-java-core)

          當(dāng)你想添加CKEditor庫,你可以選擇使用Maven或手動(dòng)添加。

          使用Maven2

          如果您的應(yīng)用程序使用Maven,你可以添加以下的依賴在你的pom.xml文件里:

          <dependency>
              <groupId>com.ckeditor</groupId>
              <artifactId>ckeditor-java-core</artifactId>
              <version>3.x.y</version>
          </dependency>

          請(qǐng)注意,3.xy表示版本,例如<version> 3.6</version> 。當(dāng)CKEditor版本添加到Maven中,將自動(dòng)下載指定版本。

          沒有Maven

          如果你不使用Maven,你必須手動(dòng)添加CKEditor jar庫。在CKEditor下載網(wǎng)站,下載的ckeditor-java-core- 3.xy* .jar文件,并把它放在在你的/ WEB-INF/lib目錄。

          *請(qǐng)注意,3.xy表示一個(gè)CKEditor發(fā)布的版本。

          在頁面上使用標(biāo)簽

          要在JSP頁面中使用<ckeditor>標(biāo)簽,你需要在頁面中聲明CKEditor標(biāo)記庫:

          <%@ taglib uri="http://ckeditor.com" prefix="ckeditor" %>

          在以下的實(shí)例中CKEditor取代HTML中textarea的元素。除非你正在使用的<ckeditor:editor>標(biāo)簽(將在后面介紹),你首先需要的是一個(gè)帶有HTMLtextarea的元素的JSP頁面

          更換所選擇的textarea元素

          我們的目的是這樣的:讓我們假設(shè)有個(gè)頁面看起來像這樣:

          <!DOCTYPE unspecified PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
          <%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
          <html>
              <body>
                  <form action="sample_posteddata.jsp" method="get">
                      <p>
                          <label for="editor1">Editor 1:</label>
                          <textarea cols="80" id="editor1" name="editor1" rows="10"></textarea>
                      </p>
                      <p>
                          <input type="submit" value="Submit" />
                      </p>
                  </form>
              </body>    
          </html>

          正如在上面的代碼中所看到的,該頁面的table元素的屬性包含sample_posteddata.jsp這個(gè)值,這一個(gè)在樣例中應(yīng)用的 web.xml映射,當(dāng)頁面被提交,鏈接到servlet,輸出出CKEditor的內(nèi)容。

          接下來,你必須在頁面中添加CKEditor標(biāo)簽(<ckeditor:replace>在這種情況下)。建議添加在底部</ BODY>標(biāo)記之前:

          <ckeditor:replace replace="editor1" basePath="/ckeditor/" />

          請(qǐng)注意,上面的CKEditor標(biāo)簽包含兩個(gè)屬性:

          • replace-一個(gè)CKEditor實(shí)例映射到將取代的HTML textarea元素的name或ID的 
          •   basePath -CKEditor主目錄的路徑。

          本文件的目的:假設(shè)CKEditor是在/ ckeditor /目錄(http://example.com/ckeditor/)。

          請(qǐng)注意,也可用其他標(biāo)記屬性。請(qǐng)參閱第一個(gè)完整的描述通用標(biāo)簽屬性的

          下面是我們的示例頁面的完整的源代碼:

          <!DOCTYPE unspecified PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
          <%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
          <%@ taglib uri="http://ckeditor.com" prefix="ckeditor" %>
          <html>
              <body>
                  <form action="sample_posteddata.jsp" method="get">
                      <p>
                          <label for="editor1">Editor 1:</label>
                          <textarea cols="80" id="editor1" name="editor1" rows="10"></textarea>
                      </p>
                      <p>
                          <input type="submit" value="Submit" />
                      </p>
                  </form>
              <ckeditor:replace replace="editor1" basePath="/ckeditor/" />
              </body>    
          </html>

           

          更換所有的textarea元素

          <ckeditor:replaceAll>標(biāo)簽用Editor實(shí)例取代文件中的所有textarea的元素。它可以選擇只更換一個(gè)CSS Class的值與CKEditor 的className屬性的值相等的textarea元素。

          <ckeditor:replaceAll basePath="/ckeditor/" className="myclass"/>

          這個(gè)標(biāo)簽用CKEditor實(shí)例替換所有Class為MyClass的textarea元素。

          創(chuàng)建一個(gè)CKEditor實(shí)例

          <ckeditor:editor>標(biāo)簽創(chuàng)建一個(gè)CKEditor實(shí)例。

          <ckeditor:editor textareaAttributes="<%=attr %>" basePath="/ckeditor/" editor="editor1" value="Type here" />

          對(duì)于這個(gè)么有HTML textarea元素的標(biāo)簽,必須在當(dāng)前頁面上創(chuàng)建并立即用CKEditor實(shí)例取代。上面的代碼包含以下元素:

          •  basePath -包含到CKEditor主目錄的路徑。
          • editor-是內(nèi)部的textarea元素的名稱。
          • value -是默認(rèn)的textarea元素值。
          •  textareaAttributes -是一個(gè) java.util.Map 存儲(chǔ)在Map keys里面的textarea的屬性名,而屬性值則存為Map values。例如:
          <% 
              Map<String, String> attr = new HashMap<String, String>();
              attr.put("rows", "8");
              attr.put("cols", "50");
          %>

          常見的標(biāo)記屬性

          下面的列表列出一些常用的標(biāo)簽屬性。

          basePath

          basePath -包含CKEditor主目錄的路徑。

          例如,如果在CKEdito下r的http://example.com/3rdparty/ckeditor/中basePath屬性應(yīng)設(shè)置為/ 3rdparty/ckeditor /。

           

          config

          config -此參數(shù)包含CKEditor配置對(duì)象。有關(guān)該屬性可用選項(xiàng)的列表,請(qǐng)參閱JavaScriptAPI。

          將配置選項(xiàng)存儲(chǔ)在CKEditorConfig對(duì)象的。他們使用添加addConfigValue方法:

          <% 
              CKEditorConfig settings = new CKEditorConfig();
              settings.addConfigValue("width","500");
          %>
          <ckeditor:replace replace="editor1" basePath="/ckeditor/" config="<%=settings %>" />

          這種方法的第一個(gè)參數(shù)始終是一個(gè)字符串形式的配置選項(xiàng)的名稱。第二個(gè)可以使用String,Boolean,Number,List,或Map對(duì)象其中一個(gè)。無論使用何種類型,CKEditor將嘗試將每個(gè)值映射到一個(gè)可以接受的形式。例如,下面的代碼:

          <% 
              CKEditorConfig settings = new CKEditorConfig();
              settings.addConfigValue("toolbar","[[ 'Source', '-', 'Bold', 'Italic' ]]");
          %>

          等同于

          <% 
              CKEditorConfig settings = new CKEditorConfig();
              List<List<String>> list = new ArrayList<List<String>>();
              List<String> subList = new ArrayList<String>();
              subList.add("Source");
              subList.add("-");
              subList.add("Bold");
              subList.add("Italic");
              list.add(subList);
              settings.addConfigValue("toolbar", list);
          %>

           

          新的CKEditor 3.6工具欄語法

          在CKEditor 3.6中,工具欄按鈕可以組織成組。每個(gè)組都有自己的名字和它包含的一組按鈕。這個(gè)新的定義可以表現(xiàn)在兩個(gè)方面。

          下面的代碼:

          <%
              CKEditorConfig settings = new CKEditorConfig();
              settings.addConfigValue("toolbar","[{name: 'document', items: ['Source', '-', 'NewPage']},
              '/', {name: 'styles', items: ['Styles','Format']} ]");
          %>

           

          等同于:

          <%
              CKEditorConfig settings = new CKEditorConfig();
              List<Object> mainList = new ArrayList<Object>();                
              HashMap<String, Object> toolbarSectionMap = new HashMap<String, Object>();
              List<String> subList = new ArrayList<String>();
              subList.add("Source");
              subList.add("-");
              subList.add("NewPage");    
              toolbarSectionMap.put("name", "document");    
              toolbarSectionMap.put("items", subList);    
              mainList.add(toolbarSectionMap);        
              mainList.add("/");
              toolbarSectionMap = new HashMap<String, Object>();
              subList = new ArrayList<String>();
              subList.add("Styles");                
              subList.add("Format");
              toolbarSectionMap.put("name", "styles");    
              toolbarSectionMap.put("items", subList);
              mainList.add(toolbarSectionMap);                
              settings.addConfigValue("toolbar", mainList);
          %>

           

           

          timestamp

           

          timestamp -此參數(shù)存儲(chǔ)一個(gè)特定的CKEditor的發(fā)行的值,這有助于避免瀏覽器緩存的問題,當(dāng)一個(gè)新的客戶端CKEditor版本上傳到服務(wù)器時(shí),它的價(jià)值就體現(xiàn)了。

           

          initialized

          initialized  - 設(shè)置這個(gè)值為true意味著ckeditor.js腳本已經(jīng)包含在頁面里面了,有沒有必要再次添加。另一方面,將它設(shè)置為false,意味著,ckeditor.js腳本應(yīng)該被添加到頁面中。

          Event

          Event -此參數(shù)存儲(chǔ)客戶端的事件監(jiān)聽器列表這是com.ckeditor.EventHandler類型。

          例如:

          首先,創(chuàng)建一個(gè)EventHandler實(shí)例然后,您可以通過使用事件的addEvent方法,其中第一個(gè)參數(shù)是CKEditor事件關(guān)鍵字,第二個(gè)是JavaScript函數(shù)中的一個(gè)連接字符串。

          <% 
              EventHandler eventHandler = new EventHandler();
              eventHandler.addEvent("instanceReady","function (ev) { alert(\"Loaded: \" + ev.editor.name); }");
          %>

          為了使用頁面上的事件,可以添加以下表達(dá)式:

          <ckeditor:editor basePath="/ckeditor/" editor="editor1" events="<%=eventHandler %>"/>

          globalEvents

          globalEvents -此參數(shù)存儲(chǔ)著可被所有CKEditor實(shí)例使用的是客戶端事件監(jiān)聽器列表,是個(gè)GlobalEventHandler類型。

          <%
              GlobalEventHandler globalEventHandler = new GlobalEventHandler();
              globalEventHandler.addEvent("dialogDefinition","function (ev) { alert(\"Loading dialog window: \" + ev.data.name); }");
          %>

           

          在一個(gè)Java類中設(shè)置配置選項(xiàng)

          configuration, events和global events可以被創(chuàng)建在一個(gè)scriptlet實(shí)例,或在一個(gè)獨(dú)立的Java類。下面是一個(gè)例子:

          package com.ckeditor.samples;
           
          import java.util.ArrayList;
          import java.util.List;
           
          import com.ckeditor.CKEditorConfig;
          import com.ckeditor.EventHandler;
          import com.ckeditor.GlobalEventHandler;
           
          public class ConfigurationHelper {
           
           
              public static CKEditorConfig createConfig() {
                  CKEditorConfig config = new CKEditorConfig();
                  List<List<String>> list = new ArrayList<List<String>>();
                  List<String> subList = new ArrayList<String>();
                  subList.add("Source");
                  subList.add("-");
                  subList.add("Bold");
                  subList.add("Italic");
                  list.add(subList);
                  config.addConfigValue("toolbar", list);
                  config.addConfigValue("width","500");
                  return config;
              }
           
              public static EventHandler createEventHandlers() {
                  EventHandler handler = new EventHandler();
                  handler.addEvent("instanceReady","function (ev) { alert(\"Loaded: \" + ev.editor.name); }");
                  return handler;
              }
           
              public static GlobalEventHandler createGlobalEventHandlers() {
                  GlobalEventHandler handler = new GlobalEventHandler();
                  handler.addEvent("dialogDefinition","function (ev) {  alert(\"Loading dialog window: \" + ev.data.name); }");
                  return handler;
              }
          }

           

          要在JSP頁面上訪問這個(gè)類,你可以使用以下表達(dá)式:

          <ckeditor:replace replace="editor1" basePath="ckeditor/"
             config="<%= ConfigurationHelper.createConfig() %>"
             events="<%= ConfigurationHelper.createEventHandlers() %>" />

           

          posted on 2012-04-14 21:23 jse7en 閱讀(2363) 評(píng)論(2)  編輯  收藏

          Feedback

          # 電腦 2012-04-25 16:05 IBM

          阿斯頓發(fā)燒是否薩法董  回復(fù)  更多評(píng)論   

          # re: Java上CKEditor集成指南 2014-08-28 15:19 阿德

          大  回復(fù)  更多評(píng)論   


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 北安市| 南汇区| 类乌齐县| 汕尾市| 萨嘎县| 东至县| 谢通门县| 莒南县| 隆德县| 岱山县| 明溪县| 乡城县| 晴隆县| 醴陵市| 襄樊市| 宝应县| 固始县| 鄄城县| 池州市| 怀柔区| 星座| 高州市| 新民市| 修文县| 绍兴县| 竹北市| 隆安县| 读书| 平江县| 北川| 东乡县| 延川县| 行唐县| 苏州市| 东明县| 固始县| 鄄城县| 菏泽市| 德阳市| 和静县| 蒙自县|