mir*_*iro 3 jsf composite-component jsf-2
我试图根据BalusC的优秀文章创建一个复合组件.我无法从支持组件中获取属性或任何值.码:
<?xml version="1.0" encoding="UTF-8" ?>
<!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:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:composite="http://java.sun.com/jsf/composite">
<composite:interface componentType="test">
<composite:attribute name="something" />
</composite:interface>
<composite:implementation>
<h:outputText value="#{composite.attrs.something}" />
<h:outputText value="#{composite.hello}" />
</composite:implementation>
</html>
Run Code Online (Sandbox Code Playgroud)
我发现相同的代码工作,然后我使用"cc"命名空间而不是"复合".码:
<?xml version="1.0" encoding="UTF-8" ?>
<!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:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:cc="http://java.sun.com/jsf/composite">
<cc:interface componentType="test">
<cc:attribute name="something" />
</cc:interface>
<cc:implementation>
<h:outputText value="#{cc.attrs.something}" />
<h:outputText value="#{cc.hello}" />
</cc:implementation>
</html>
Run Code Online (Sandbox Code Playgroud)
问题是,为什么它不能使用"复合"命名空间?我找不到任何"复合"是JSF保留字或其他内容的信息.
谢谢.
您将XML命名空间与隐式EL对象混淆.将cc
在#{cc}
不参考当前正在使用的复合材料部件的XML命名空间.它只引用EL范围中的复合组件实例,并且是固定名称.这个结构与composite
XML命名空间一样好用.
<?xml version="1.0" encoding="UTF-8" ?>
<!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:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:composite="http://java.sun.com/jsf/composite">
<composite:interface componentType="test">
<composite:attribute name="something" />
</composite:interface>
<composite:implementation>
<h:outputText value="#{cc.attrs.something}" />
<h:outputText value="#{cc.hello}" />
</composite:implementation>
</html>
Run Code Online (Sandbox Code Playgroud)
(注意:我宁愿使用<ui:component>
而不是<?xml?><!DOCTYPE><html>
,就像你在那里链接的博客文章一样)
至于XML命名空间,composite
是不必要的长,不会像其他所有简称XML命名空间中很好地适应h
,f
,c
等这就是为什么许多开发商选择使用cc
,而不是composite
作为记录由JSF本身.请注意,复合标记文档本身也在#{cc}
整个示例中使用composite
XML命名空间.
归档时间: |
|
查看次数: |
1841 次 |
最近记录: |