gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 22:38:31 24 4
gpt4 key购买 nike

我有一个 JSF 2.0 Web 应用程序,我想在其中包含 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 文件可访问。

最佳答案

<h:outputScript>将生成由 ResourceHandler 处理的 JSF 资源 URL这反过来又允许模块化和版本控制,而无需更改 <h:outputScript name> .当 FacesServlet映射到 *.xhtml ,资源 URL 将如下所示

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

TinyMCE 脚本显然是根据脚本自己的 URL 自动包含一些其他脚本,而不是使用 .xhtml后缀考虑在内。

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

这确实会导致 404。当您为 FacesServlet 使用前缀映射时喜欢/faces/* ,则不会出现这个问题。

一种解决方案是对 <script> 进行硬编码自己使用所需的 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"/>

唯一的缺点是,当您在单个 View 中使用多个复合组件时,您最终会得到多个 <script>正文中的条目,而不是 <h:outputScript> 处理的一个条目.这可能会导致 JavaScript 冲突/错误。如果你遇到这个问题,我会考虑相应地破解/修复 TinyMCE JavaScript 文件,它添加了 .xhtml URL 的后缀,以便您可以继续使用 <h:outputScript> .或者,您当然可以使用现有的即用型 JSF 富文本编辑器组件,例如 PrimeFaces <p:textEditor> ,这样您就不必担心这一切。

关于jsf - 使用 JSF h :outputScript 时找不到 TinyMCE .js 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10345887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com