我正在使用 JSF 2。
对于其中一个页面,它需要包含一个页面,如下所示:
domain/subdomain/cms/[userspecified_code].html
我使用 ui:include 标记来获取此文件。它适用于存在的文件,但对于不存在的文件,它会抛出 FileNotFoundException 将整个页面呈现为错误页面。
是否有 ui:include 标记的替代解决方案可以跳过/记录文件错误,并且只显示一个空白部分?这样可以最大限度地减少对用户的干扰(包含的文件只是页面的一小部分,如果没有匹配的文件,我宁愿不显示任何内容)。我能想到的一种方法是加载 ajax 部分,所以如果出现错误,它将是 javascript 错误而不是服务器错误,但是有更优雅/更简单的方法吗?
这是我目前拥有的xhtml:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html">
Lots of other html....
<ui:include src="domain/subdomain/cms/#{userspecified_code}.html"/>
Lots of other html....
</html>
编辑
感谢所有的答案。我正在寻找一种不需要我自己添加所有文件检查逻辑的解决方案。