Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 使用TinyMCE将内容保存到Facelets模板中_Jsf_Tinymce_Facelets - Fatal编程技术网

Jsf 使用TinyMCE将内容保存到Facelets模板中

Jsf 使用TinyMCE将内容保存到Facelets模板中,jsf,tinymce,facelets,Jsf,Tinymce,Facelets,我试图用TinyMCE和JSF2.x实现一个解决方案。 然而,我不确定如何继续(不同的方法) 我想做的是 创建具有特定可编辑区域/部分的用户模板(Facelets文件) 有人可以在登录后通过TinyMCE进行编辑 我不想使用DB来存储“可编辑”的部分或将它们动态地插入Facelets模板 我在想这样的事 将可编辑内容加载到TinyMCE中 用户更新内容 提交时,使用Java API验证内容以进行XML处理 或者其他一些xml/xhtml解析器 阅读Facelets模板并用提交的内容替换可编辑内容

我试图用TinyMCE和JSF2.x实现一个解决方案。 然而,我不确定如何继续(不同的方法)

我想做的是

创建具有特定可编辑区域/部分的用户模板(Facelets文件) 有人可以在登录后通过TinyMCE进行编辑

我不想使用DB来存储“可编辑”的部分或将它们动态地插入Facelets模板

我在想这样的事

  • 将可编辑内容加载到TinyMCE中
  • 用户更新内容
  • 提交时,使用Java API验证内容以进行XML处理 或者其他一些xml/xhtml解析器
  • 阅读Facelets模板并用提交的内容替换可编辑内容
  • 用新的Facelets文件替换旧的Facelets文件并保存它
  • 在进行更改之前,是否应该使用中间步骤将提交的内容预保存到Facelets文件中?
    任何其他关于如何继续进行的想法都将不胜感激

    默认情况下,Xhtml文件位于WAR内部。你可以部署爆炸战争并将其保存到位。然而,重新部署后,您将丢失所有更改

    您可以“黑客”JSF在WAR归档文件之外寻找模板,但这可能很棘手

    你需要坚持使用JSF吗?基于组件的服务器端技术不是最佳选择。对于此类解决方案,我最好使用一些基于模板的控制器优先技术,如SpringMVC或Grails。注意,在JSF中,控制流的是XHTML页面。这不仅仅是模板技术


    还请注意,这就是CMS系统被发明的原因。

    我在一个项目中使用了richfaces html编辑器,但我们遇到了几个问题,因此我们决定创建自己的facelet标记,用于加载apache提供的tinymce文件。很有魅力

    我不想使用DB来存储“可编辑”的部分或将它们动态地插入Facelets模板

    然后,您唯一可行的选择是将它们保存在本地磁盘文件系统中。请注意,您可以也不应该将它们保存在WAR的deploy文件夹中,而是保存在WAR之外。否则,在重新部署过程中,甚至在简单的服务器重启过程中,所有更改都将丢失。更重要的是,当服务器配置为在内存中而不是在磁盘上扩展WAR时,您将无法向其写入文件

    在战争之外保存文件很容易。只需写入此文件上的
    FileOutputStream

    new File("/some/base/path", filename);
    
    让Facelets解析来自外部WAR的资源需要自定义:

    公共类MyResourceResolver扩展了ResourceResolver{
    私有资源解析器父级;
    公共MyResourceResolver(ResourceResolver父级){
    this.parent=parent;
    }
    @凌驾
    公共URL解析URL(字符串路径){
    URL URL=parent.resolveUrl(路径);//从WAR解析。
    如果(url==null){
    url=新文件(“/some/base/path”,path).toURI().toul();
    }
    返回url;
    }
    }
    
    需要按如下方式在
    web.xml
    中注册

    
    javax.faces.FACELETS\u资源\u解析器
    com.example.MyResourceResolver
    
    注意,我知道xhtml文件默认位于WAR内部。我想知道我是否可以使用类似的东西来读取预先保存的xml/xhtml内容并将其呈现出来(虽然它保存在战争之外)。需要坚持使用JSF。只操作基本内容,不操作表单输入字段等。检查/倾听意见:)创建自定义Facelets资源解析程序绝对不是“黑客”或“棘手”。请参阅我的答案。@Dimman如果您不打算让用户使用JSF组件标记,只使用普通HTML-您最好将普通HTML文件从ouside WAR加载到Facelets中的占位符中。想象一下,如果用户可以添加繁重的JSF组件、事件监听器、#{someBean.dosomething()}以及可能最糟糕的JSTL标记,就会出现混乱。同意,只允许HTML内容进入可编辑部分。再次感谢对即将保存的内容进行JAVA XML验证是否明智?(愚蠢的问题,我想是的)。感谢您,我将通过调用
    ViewDeclarationLanguage\buildView()
    来利用Facelets编译器。