使用JSF h:outputScript时未找到TinyMCE.js文件
我有一个JSF2.0WebApplication,我想在其中加入Tinymce3.5 我将其包括在内的方式如下:使用JSF h:outputScript时未找到TinyMCE.js文件,jsf,tinymce,Jsf,Tinymce,我有一个JSF2.0WebApplication,我想在其中加入Tinymce3.5 我将其包括在内的方式如下: <composite:implementation> <h:outputScript name="tiny_mce/tiny_mce.js"/> <h:outputScript name="js/tinymce_init.js"/> <h:inputTextarea rows="5" cols="80" styleCl
<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。它试图从“”加载它。如果我在浏览器中输入这个URL,我会得到一个404。如果我在最后加上.xhtml(“”),一切都很好
因此,我想问您,是否有一种方法可以将xhtml添加为.js文件的默认结尾,或者是否有一种方法可以使.js文件可访问。您也可以测试它,而不是
这:
或者像这样:
<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>
该
将生成一个JSF资源URL,该URL由ResourceHandler
处理,从而允许模块化和版本化,而无需更改
。当FacesServlet
映射到*.xhtml
上时,资源URL如下所示
/contextname/javax.faces.resource/filename.js.xhtml
TinyMCE脚本显然是根据脚本自己的URL自动包含一些其他脚本,而不考虑.xhtml
后缀
/contextname/javax.faces.resource/otherfile.js
这将导致404。当您对像/faces/*
这样的FacesServlet
使用前缀映射时,将不会发生此问题
一种解决方案是自己用所需的URL硬编码
。那么,正确的替代品将是
<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"/>
唯一的缺点是,当您在一个视图中使用多个复合组件时,最终会在主体中出现多个
条目,而不是
只处理一个条目。这可能会导致JavaScript冲突/错误。如果您遇到这个问题,我会考虑对TyMyCE JavaScript文件进行破解/修复,从而在URL中添加<代码> .xHTML/COD>后缀,这样您就可以继续使用<代码> <代码>。或者,您当然可以使用现有的、随时可用的JSF富文本编辑器组件,例如,这样您就不必担心这一切。我刚刚遇到了这个问题,最简单的解决方案是,您可以使用与为tiny_mce.js添加相同的方式添加缺少的文件
<!-- 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>
*.js.xhtml将非常可怕。。。如果对*.xhtml结尾有任何限制,请检查您的web.xml或faces-config.xml。。。否则,你为什么不把所有的tinymce文件放在一个文件夹里呢?谢谢你的建议,托比。我同意你的看法。没有选择js.xhtml。web.xml和faces-config.xml似乎还可以。一个文件夹中的所有.js文件都无法解决问题,因为其中一些.js文件引用了其他文件(因此需要保留结构)。好的。。。这可能对你有帮助吗?我也有同样的问题,但资源文件夹应该在哪个目录下?它只是同一个资源文件夹。唯一的变化是按照指示的方式将
替换为
。我已经定义了,但无法加载404BALUC。请帮助我解决这个问题,我面临着来自Longic的问题。如果您有/resources/xxx/yyy.js
,那么您需要使用
而不是
。
<!-- 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>