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 基于当前页面包含JS文件_Jsf_Richfaces_Facelets - Fatal编程技术网

Jsf 基于当前页面包含JS文件

Jsf 基于当前页面包含JS文件,jsf,richfaces,facelets,Jsf,Richfaces,Facelets,我的主jsf包装页上有以下内容: <head> <meta http-equiv="Content-Type" content="text/xhtml; charset=UTF-8"/> <title> <ui:insert name="pageTitle" /> </title> <a4j:loadScript src="resource://jquery.js" /> <a4j:lo

我的主jsf包装页上有以下内容:

<head>
  <meta http-equiv="Content-Type" content="text/xhtml; charset=UTF-8"/>
  <title>
    <ui:insert name="pageTitle" /> 
  </title>

  <a4j:loadScript src="resource://jquery.js" />
  <a4j:loadScript src="resource:///bla/html/js/base.js" />
  <a4j:loadScript src="resource:///bla/html/js/common.js" />
  <a4j:loadScript src="resource:///bla/html/js/inactivity.js" />
</head>

现在我在网站上有了一个新页面,它需要一些js函数。因此,我创建了一个新的js文件myNewJSFile.js

我只希望它加载,如果一个用户在这个页面上的土地如此明显,我不想把它添加到我的头上面的文件列表。另外,我不想把它放在我的新页面的顶部

我想要的是一个可以根据当前页面定义要加载哪些文件的位置

像这样的东西(伪代码):

主jsf包装器:

<head>
  <jsIncludes>
</head>


jsIncludes文件:

<a4j:loadScript src="resource://jquery.js" />
<a4j:loadScript src="resource:///bla/html/js/base.js" />
<a4j:loadScript src="resource:///bla/html/js/common.js" />
<a4j:loadScript src="resource:///bla/html/js/inactivity.js" />

<if page == "myNewPage>
  <a4j:loadScript src="resource:///bla/html/js/myNewJsFile.js" />
<elfeif ...>
...
</if>


我宁愿在主模板的
中添加另一个

<head>
    ...
    <ui:insert name="headContent" />
</head>

...
然后在页面模板中,只需定义要插入其中的附加脚本

<ui:composition template="main.xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:a4j="http://??? can't tell from top of head :)"
>
    <ui:define name="headContent">
        <a4j:loadScript src="resource:///bla/html/js/myNewJsFile.js" />
    </ui:define>

    ...
</ui:composition>

...

a4j:loadScript
始终将javascript放在
中,无论您在哪里使用它,都无需执行任何操作。(医生出于某种奇怪的原因没有提到这一点)


因此,要回答您的问题:如果您在需要的页面中使用
,则
将出现在

中。如果这是真的,那么这就是解决方法。JSF2.0还提供了
,它也会将它插入
中,而不管您在哪里声明它。是的,我在那里进行了测试,它肯定会使用a4j:loadScript将所有内容放在头部。我同意这个解决方案。谢谢亚当和巴卢斯。