Jsf 2 使用ui:include时避免使用多个DOCTYPE和html标记
我们在“主页”中使用了几个Jsf 2 使用ui:include时避免使用多个DOCTYPE和html标记,jsf-2,facelets,Jsf 2,Facelets,我们在“主页”中使用了几个ui:include标记。要包含的页面如下所示: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns=".." xmlns:ui="..." ...> <ui:fragment rendered="${fo
ui:include
标记。要包含的页面如下所示:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns=".." xmlns:ui="..." ...>
<ui:fragment rendered="${foo}">
some html code
</ui:fragement>
<ui:fragment rendered="${!foo || bar}">
some more html code
</ui:fragement>
</html>
一些html代码
更多的html代码
使用ui:include
进行模板化会导致在源代码中多次重复DOCTYPE
和html
标记,这非常难看。(当然,用户看不到,但我是tidy html的粉丝)
但是,如果我从要包含的xhtml中删除DOCTYPE
和html
标记,Faces Servlet将抛出一个异常,说明ui:fragment
的前缀ui
未绑定
有人知道吗,我如何在没有多个
DOCTYPE
s和html
s的情况下包含另一个XHTML页面。您应该看看ui:composition标签。
我们还使用ui:include来包含jsf2页面,为了解决您的问题,我相信您可以通过添加ui:composition标记来更改包含的页面,如下所示:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns=".." xmlns:ui="..." ...>
<ui:composition>
<ui:fragment rendered="${foo}">
some html code
</ui:fragement>
<ui:fragment rendered="${!foo || bar}">
some more html code
</ui:fragement>
</ui:composition>
</html>
一些html代码
更多的html代码