自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

在JSF/JSP中集成FCKEditor

開發(fā) 后端
本文介紹在JSF/JSP中集成FCKEditor,以及保存HTML編輯內容,你只需要通過獲得到的HttpServletRequest對象獲取頁面提交中的Parameter對象等。

目前,F(xiàn)CKEditor (http://www.fckeditor.net/) 是開源社區(qū)一款強大的HTML編輯器,目前***版本是2.6,支持Java的插件版本是2.4Beta1。

對于一般的Java Web應用,我們可以通過直接插入JavaScript代碼來構造頁面,這種方式操作起來比較簡便,也是通用在所有web頁面的一種方式。但是,在實際的 Java Web應用中,我們除了用到普通的頁面編輯功能之外,難免會考慮到頁面上傳圖片、附件等功能。所以,單純使用JavaScript方式的話,這一大堆的文件上傳代碼將由你自己來寫了,工程量還是比較浩大的。自然而然,我們會想到Jsp Tag,有沒有現(xiàn)成的快餐式的頁面標簽呢?答案是肯定的,就如我上文提到的Java插件就已經實現(xiàn)了這些功能,并集成了Apache Commons-FileUpload,以此來實現(xiàn)文件服務器上傳。

2.4版的Java插件已經封裝得更加簡潔,不同于之前的其他版本。標簽的使用方式是

  1. <%@taglib uri="http://java.fckeditor.net" prefix="FCK"%>      
  2. <FCK:editor instanceName="EditorDefault" width="755" height="460" basePath=                                        "/fckeditor" value="Hello, world">      
  3.   <jsp:body>      
  4.     <FCK:config SkinPath="skins/office2003/" />      
  5.   jsp:body>      
  6. FCK:editor>    

在JSF應用中,由于頁面都是JSF自定義標簽,對于其他標簽的內容,JSF不會自動將后臺Bean中的值綁定到,那么我們還要做做文章,通過一段JavaScript綁定到body_onload()事件中,以此將JSF 標簽的內容傳遞給

  1. <script type="text/javascript">          
  2.     function renderMessage() {      
  3.         YAHOO.util.Dom.get("EditorDefault").value = YAHOO.util.Dom.get("form:content").value;      
  4.     }      
  5. script>          
  6. <f:view>      
  7.   <h:form id="form">      
  8.     <h:inputTextarea id="content" value="#{mainMessageEditBean.                                             message.messageContent}"  style="display:none">h:inputTextarea>      
  9.   h:form>      
  10. f:view>  


保存HTML編輯內容的時候,你只需要通過獲得到的HttpServletRequest對象獲取頁面提交中的Parameter對象,示例代碼如下:

  1.  public Map getParamMap() {      
  2.      return getFacesContext().getExternalContext().getRequestParameterMap();      
  3.  }      
  4.  public String getParamAsString(String paramName) {      
  5.     Object obj = getParamMap().get(paramName);      
  6.     if (obj != null) {      
  7.          return obj.toString();          
  8. } else {      
  9.         return "";      
  10.      }      
  11.  }        
  12.  public String saveMessage() {      
  13.     if (message == null) {      
  14.          setErrMsg("Message does not exist.");      
  15.         return null;                  
  16.      }      
  17.     String content = getParamAsString("EditorDefault");      
  18.     if (content == null || content.length() == 0) {      
  19.          setErrMsg("Message must not be empty.");      
  20.          return null;                              
  21.      }      
  22.  }     

其他方面,我們需要在自己的web.xml中定義FCKEditor相關的Servlet:

  1. <servlet>      
  2.   <servlet-name>Connectorservlet-name>      
  3.     <servlet-class>      
  4.          net.fckeditor.connector.ConnectorServlet      
  5.     servlet-class>      
  6.     <load-on-startup>1load-on-startup>      
  7. servlet>      
  8. <servlet-mapping>      
  9.     <servlet-name>Connectorservlet-name>      
  10.     <url-pattern>      
  11.          /fckeditor/editor/filemanager/connectors/*      
  12.     url-pattern>      
  13. servlet-mapping>  

這里需要注明的是,/fckeditor這個web根目錄下的目錄來源于FCKEditor的核心包(Ver 2.6),可以在官方網站上面下載得到。

在目錄/fckeditor下面有一個重要的文件fckconfig.js,里面可以配置許多FCKEditor在頁面上的展示風格,大家可以仔細慢慢研究 :)

PS: 考慮到安全問題,建議大家把FCKEditor界面上的Source Code按鈕屏蔽掉,防止黑客的惡意腳本的破壞。

在我的實際應用中,因為要限制上傳文件的權限,所以我要用到權限控制。幸好FCKEditor提供了相應的UserAction接口,可以讓我自己實現(xiàn)一個類來控制權限。

  1.  <em style="font-style: italic;">package com.tail.utils;           
  2.  import javax.servlet.http.HttpServletRequest;      
  3.  import javax.servlet.http.HttpSession;          
  4.  import net.fckeditor.requestcycle.UserAction;             
  5.  import com.tail.beans.Principal;      
  6.  import com.tail.objects.User;            
  7.  public class UserActionImpl implements UserAction {        
  8.      public boolean isEnabledForFileBrowsing(HttpServletRequest req) {              
  9.          return true;      
  10.      }          
  11.      public boolean isEnabledForFileUpload(HttpServletRequest req) {      
  12.          HttpSession session = req.getSession();      
  13.          Principal principal = (Principal) session.getAttribute(ConstantUtil.SESSION_PRINCIPAL);      
  14.          if (principal != null) {        
  15.              User user = principal.getUser();      
  16.              if (user.isUploadable()) {      
  17.                  return true;      
  18.              }      
  19.          }      
  20.          return false;      
  21.      }           
  22.  }  em>   

如何加載自定義的UserAction類呢?在classes的根目錄下,你需要定義一個fckeditor.properties文件:

  1.  <em style="font-style: italic;">connector.userActionImpl=com.                                                                             tail.utils.UserActionImpl  em>   

這樣你就可以控制文件上傳的權限了。

【編輯推薦】

  1. JSF的工作方式
  2. Acegi安全系統(tǒng)與JSF結合
  3. JavaServer Faces(JSF)簡介
  4. 在JSF中的頁面導航問題
  5. 介紹JSF框架中使用的設計模式
責任編輯:佚名 來源: JavaEye
相關推薦

2009-09-10 09:48:15

JSP使用FCKedi

2009-06-30 10:59:38

fckeditorJSP

2011-07-20 17:10:05

iPhone iAd

2009-06-01 16:18:30

SpringJPA集成

2009-02-25 10:55:29

FCKeditor控件JSP

2009-01-03 14:43:55

ibmdwPHPsMash

2014-09-28 14:53:39

滲透BurpSuiteSqlmap

2011-06-29 09:42:12

Visual Stud Qt Opensource

2009-01-03 15:01:16

ibmdwLptus

2009-06-26 11:15:08

JSF入手JSP

2009-06-26 13:48:57

G4JSFGWTJSF

2009-06-11 13:28:18

Glassfish集成

2016-04-20 09:47:40

MapBoxAndroid地圖

2009-06-23 13:21:26

JSF和Spring

2009-06-17 15:18:38

JSF與Spring

2009-07-03 10:48:12

JSP和JSF

2011-03-04 09:40:42

AJAX開發(fā)集成數(shù)據(jù)庫

2012-10-18 10:12:42

IBMdw

2009-07-14 15:42:38

MyEclipse開發(fā)

2024-01-31 09:42:11

RabbitMQ消息隊列.NET
點贊
收藏

51CTO技術棧公眾號