Как создать композицию из существующих компонентов в JSF? - PullRequest
6 голосов
/ 07 марта 2011

Я хотел бы знать, возможно ли создать собственный компонент (или назвать его Widget, Object).

Я имею в виду, вместо того, чтобы (например) использовать h:panelGroup и h:outputLabel внутри него, создать свой собственный h:panelMarkzzz как композицию panelGroup и outputLabel.

Возможно ли это на JSF?

Ответы [ 2 ]

7 голосов
/ 07 марта 2011

Да, можно создать такую ​​композицию из существующих компонентов.

Пример запуска:

/resources/foo/group.xhtml

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:cc="http://xmlns.jcp.org/jsf/composite">
    <cc:interface>
        <cc:attribute name="label" type="java.lang.String" required="true" />
    </cc:interface>
    <cc:implementation>
         <h:panelGroup>
             <h:outputLabel value="#{cc.attrs.label}" />
             <cc:insertChildren />
         </h:panelGroup>
    </cc:implementation>
</html>

/test.xhtml

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://xmlns.jcp.org/jsf/html" 
    xmlns:foo="http://xmlns.jcp.org/jsf/composite/foo">
    <h:head>
        <title>Test</title>
    </h:head>
    <h:body>
        <foo:group label="Label value">
            <h:outputText value="This will appear after label inside the panelgroup" />
        </foo:group>
    </h:body>
</html>

Имя папки /foo является бесплатным на ваш вкус, и вы можете ссылаться на него в пространстве имен XML как http://xmlns.jcp.org/jsf/composite/XXX. Имя файла XHTML - это имя тега.

Тем не менее, составные компоненты влияют на производительность, и их следует использовать только тогда, когда функциональные требования не достижимы с помощью простого include или tagfile. В вашем конкретном случае лучше использовать файл тегов. Составной компонент достоин только тогда, когда он действительно нужен для <cc:interface componentType="...">.

Смотри также:

2 голосов
/ 07 марта 2011

Возможно, вы имеете в виду Составные компоненты ?

...