使用FacesServlet在Javascript中解析EL变量

时间:2010-07-06 09:08:59

标签: jsf servlets

我正在将文件中的所有Javascript代码和应用程​​序外部化,并解析代码中的所有EL变量,我尝试使用BalusC解决方案2作为 this SO question的答案。

我正在尝试使用Faces Servlet来处理请求时的JS文件。问题是,当我设置时,找不到JS文件,我无法猜出问题出在哪里。这是我的web.xml

<mime-mapping>
<extension>js</extension>
<mime-type>application/x-javascript</mime-type>
</mime-mapping>
 <servlet>
  <servlet-name>Faces Servlet</servlet-name>
  <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>*.xhtml</url-pattern>
 </servlet-mapping>
  <servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>/js/myapp-functions.js</url-pattern>
 </servlet-mapping>

如果我尝试通过http://localhost:8080/myappname/js/myapp-functions.js获取文件,则会收到404错误。文件在那里(双重检查)。如果我删除JS文件的映射,我可以正常获取文件(但如上所述,EL变量未解析)。

有什么建议吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

实际文件扩展名应与javax.faces.DEFAULT_SUFFIX匹配,默认为*.xhtml。请注意,您需要将整个页面包装在<script></script>内,否则Facelets的SAX解析器会抱怨文档格式不正确。