我有一个JSF2.0Web应用程序,我想在其中包含TinyMCE 3.5。
我包含它的方式如下所示:
<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文件。
发布于 2012-04-27 14: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>
进行硬编码。正确的替代方法应该是
<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 ,这样您就不需要担心这些问题了。
发布于 2012-04-27 06:54:37
您也可以测试它,而不是<h:outputScript...>
这一点:
<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>
或者类似这样的东西:
<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>
发布于 2015-06-12 10:33:29
我刚刚遇到了这个问题,最简单的解决方案是像为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>
https://stackoverflow.com/questions/10345887
复制相似问题