本文介绍在JSF/JSP中集成FCKEditor,以及保存HTML编辑内容,你只需要通过获得到的HttpServletRequest对象获取页面提交中的Parameter对象等。
现在,FCKEditor (http://www.FCKEditor.net/) 是开源社区一款强壮的HTML修改器,现在***版别是2.6,支撑Java的插件版别是2.4Beta1。
关于一般的Java Web运用,咱们能够经过直接插入JavaScript代码来结构页面,这种方法操作起来比较简练,也是通用在所有web页面的一种方法。可是,在实践的 Java Web运用中,咱们除了用到一般的页面修改功用之外,难免会考虑到页面上传图片、附件等功用。所以,单纯运用JavaScript方法的话,这一大堆的文件上传代码将由你自己来写了,工程量仍是比较浩大的。自然而然,咱们会想到Jsp Tag,有没有现成的快餐式的页面标签呢?答案是必定的,就如我上文说到的Java插件就现已完成了这些功用,并集成了Apache Commons-FileUpload,以此来完成文件服务器上传。
2.4版的Java插件现已封装得愈加简练,不同于之前的其他版别。标签的运用方法是
- JSP:body>
- FCK:editor>
在JSF运用中,由于页面都是JSF自界说标签,关于其他标签的内容,JSF不会主动将后台Bean中的值绑定到,那么咱们还要做做文章,经过一段JavaScript绑定到body_onload()拜见中,以此将JSF 标签的内容传递给。
- functionrenderMessage(){
- YAHOO.util.Dom.get("EditorDefault").value=YAHOO.util.Dom.get("form:content").value;
- }
- script>
- h:inputTextarea>
- h:form>
- f:view>
保存HTML修改内容的时分,你只需求经过获得到的HttpServletRequest目标获取页面提交中的Parameter目标,示例代码如下:
- publicMapgetParamMap(){
- returngetFacesContext().getExternalContext().getRequestParameterMap();
- }
- publicStringgetParamAsString(StringparamName){
- Objectobj=getParamMap().get(paramName);
- if(obj!=null){
- returnobj.toString();
- }else{
- return"";
- }
- }
- publicStringsaveMessage(){
- if(message==null){
- setErrMsg("Messagedoesnotexist.");
- returnnull;
- }
- Stringcontent=getParamAsString("EditorDefault");
- if(content==null||content.length()==0){
- setErrMsg("Messagemustnotbeempty.");
- returnnull;
- }
- }
其他方面,咱们需求在自己的web.xml中界说FCKEditor相关的Servlet:
- Connectorservlet-name>
- net.fckeditor.connector.ConnectorServlet
- servlet-class>
- 1load-on-startup>
- servlet>
- Connectorservlet-name>
- /fckeditor/editor/filemanager/connectors/*
- url-pattern>
- servlet-mapping>
管中窥豹需求注明的是,/fckeditor这个web根目录下的目录来源于FCKEditor的核心包(Ver 2.6),能够在官方网站上面下载得到。
在目录/fckeditor下面有一个重要的文件fckconfig.js,里边能够装备许多FCKEditor在页面上的展现风格,我们能够细心渐渐研讨 :)
PS: 考虑到安全问题,主张我们把FCKEditor界面上的Source Code按钮屏蔽掉,避免黑客的歹意脚本的损坏。
在我的实践运用中,由于要约束上传文件的权限,所以我要用到权限操控。幸亏FCKEditor供给了相应的UserAction接口,能够让我自己完成一个类来操控权限。
- packagecom.tail.utils;
- importjavax.servlet.http.HttpServletRequest;
- importjavax.servlet.http.HttpSession;
- importnet.fckeditor.requestcycle.UserAction;
- importcom.tail.beans.Principal;
- importcom.tail.objects.User;
- publicclassUserActionImplimplementsUserAction{
- publicbooleanisEnabledForFileBrowsing(HttpServletRequestreq){
- returntrue;
- }
- publicbooleanisEnabledForFileUpload(HttpServletRequestreq){
- HttpSessionsession=req.getSession();
- Principalprincipal=(Principal)session.getAttribute(ConstantUtil.SESSION_PRINCIPAL);
- if(principal!=null){
- Useruser=principal.getUser();
- if(user.isUploadable()){
- returntrue;
- }
- }
- returnfalse;
- }
- }em>
怎么加载自界说的UserAction类呢?在classes的根目录下,你需求界说一个fckeditor.properties文件:
- connector.userActionImpl=com. tail.utils.UserActionImplem>
这样你就能够操控文件上传的权限了。
【修改引荐】
- JSF的工作方法
- Acegi安全体系与JSF结合
- JavaServer Faces(JSF)简介
- 在JSF中的页面导航问题
- 介绍JSF结构中运用的规划形式
知优网 » 在JSF/JSP中集成FCKEditor(jsp jsf)