首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JSF h:outputScript时找不到TinyMCE .js文件

使用JSF h:outputScript时找不到TinyMCE .js文件
EN

Stack Overflow用户
提问于 2012-04-27 14:35:40
回答 3查看 2K关注 0票数 1

我有一个JSF2.0Web应用程序,我想在其中包含TinyMCE 3.5。

我包含它的方式如下所示:

代码语言:javascript
复制
<composite:implementation>
    <h:outputScript name="tiny_mce/tiny_mce.js"/>
    <h:outputScript name="js/tinymce_init.js"/>
    <h:inputTextarea rows="5" cols="80" styleClass="tinymce" value="#{cc.attrs.value}"/>
</composite:implementation>

现在一切都正常了。我遇到的唯一问题是"tiny_mce.js“引用了tiny_mce文件夹中的其他js文件。这些引用返回404错误,因为它们没有.xhtml结尾。

示例: tiny_mce.js引用en.js。它试图从"http://localhost:8080/briefe/javax.faces.resource/js/tiny_mce/langs/en.js“中加载它。如果我在浏览器中输入这个URL,我会得到一个404。如果我在最后加上.xhtml ("http://localhost:8080/briefe/javax.faces.resource/js/tiny_mce/langs/en.js.xhtml"),一切都很好。

所以我想问你,是否有一种方法可以添加xhtml作为.js文件的默认结尾,或者是否有一种方法可以访问.js文件。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-27 22:02:01

<h:outputScript>将生成一个JSF资源URL,该资源URL由ResourceHandler处理,从而允许模块化和版本化,而不需要更改<h:outputScript name>。将资源FacesServlet映射到*.xhtml上时,资源URL将如下所示

/contextname/javax.faces.resource/filename.js.xhtml

TinyMCE脚本显然是自动的-包括一些基于脚本自己的URL的其他脚本,而不考虑.xhtml后缀。

/contextname/javax.faces.resource/otherfile.js

这确实会导致404。当您使用像/faces/*这样的FacesServlet前缀映射时,就不会出现这个问题。

一种解决方案是自己使用所需的网址对<script>进行硬编码。正确的替代方法应该是

代码语言:javascript
复制
<script type="text/javascript" src="#{request.contextPath}/resources/tiny_mce/tiny_mce.js"/>
<script type="text/javascript" src="#{request.contextPath}/resources/js/tinymce_init.js"/>

惟一的缺点是,当您在单个视图中使用多个复合组件时,最终会在主体中有多个<script>条目,而不是像<h:outputScript>那样只有一个条目。这可能会导致JavaScript冲突/错误。如果你遇到这个问题,我会考虑破解/修复TinyMCE的JavaScript文件,因为它会在网址中添加.xhtml后缀,这样你就可以继续使用<h:outputScript>了。当然,您也可以使用现有的、随时可用的JSF富文本编辑器组件,比如PrimeFaces ,这样您就不需要担心这些问题了。

票数 3
EN

Stack Overflow用户

发布于 2012-04-27 14:54:37

您也可以测试它,而不是<h:outputScript...>

这一点:

代码语言:javascript
复制
<composite:implementation>
    <script language="text/javascript" src="tiny_mce/tiny_mce.js" />
    <script language="text/javascript" src="js/tinymce_init.js" />
    <h:inputTextarea rows="5" cols="80" styleClass="tinymce" value="#{cc.attrs.value}"/>
</composite:implementation>

或者类似这样的东西:

代码语言:javascript
复制
<script language="text/javascript" src="tiny_mce/tiny_mce.js" />
<script language="text/javascript" src="js/tinymce_init.js" />

<composite:implementation>
    <h:inputTextarea rows="5" cols="80" styleClass="tinymce" value="#{cc.attrs.value}"/>
</composite:implementation>
票数 0
EN

Stack Overflow用户

发布于 2015-06-12 18:33:29

我刚刚遇到了这个问题,最简单的解决方案是像为tiny_mce.js添加文件一样添加丢失的文件

代码语言:javascript
复制
        <!-- TinyMCE -->
        <h:outputScript library="libs" name="js/tinymce/4.1.10/tinymce.min.js"></h:outputScript>
        <!-- TinyMCE theme -->
        <h:outputScript library="libs" name="js/tinymce/4.1.10/themes/modern/theme.min.js"></h:outputScript>
        <!-- TinyMCE plugins -->
        <h:outputScript library="libs" name="js/tinymce/4.1.10/plugins/advlist/plugin.min.js"></h:outputScript>
        <h:outputScript library="libs" name="js/tinymce/4.1.10/plugins/autolink/plugin.min.js"></h:outputScript>
        <h:outputScript library="libs" name="js/tinymce/4.1.10/plugins/lists/plugin.min.js"></h:outputScript>
        <h:outputScript library="libs" name="js/tinymce/4.1.10/plugins/charmap/plugin.min.js"></h:outputScript>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10345887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档