Создание составного компонента в JSF2 - PullRequest
2 голосов
/ 29 сентября 2011

У меня проблема с составным компонентом в JSF2. Я реализую список с помощью пользовательского интерфейса и li. Но если я использую свой компонент, ничего не происходит. Мой список-тег не заменяется в коде, сгенерированном Facelet. Так что с этим не так.

Составной компонент хранится в /resources/util/list.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:h="http://java.sun.com/jsf/html"
      xmlns:composite="http://java.sun.com/jsf/composite"
      xmlns:ui="http://java.sun.com/jsf/facelets">
<head><title>(For validation only)</title></head>
<body>
<composite:interface>
    <composite:attribute name="values"/>
    <composite:attribute name="listStyle"/>
    <composite:attribute name="elementStyle"/>
</composite:interface>
<composite:implementation>
<ul class="#{cc.attrs.listStyle}">
<ui:repeat var="element" value="#{cc.attrs.values}">
    <li class="#{cc.attrs.elementStyle}">#{element}</li>
</ui:repeat>
</ul>
</composite:implementation>
</body></html>

Я использую свой тег таким образом

<!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:ui="http://java.sun.com/jsf/facelets"
    xmlns:core="http://java.sun.com/jsf/core"
    xmlns:utils="http://http://java.sun.com/jsf/composite/utils">
  <h:head>
    <title>Show user Color</title>
    <style type="text/css">
      .elements { font-style: italic; }
      .list { margin: 0px; padding:0px;}
    </style>

  </h:head>
  <h:body>
    <h1>Show Color</h1>
    <p>User selected: #{ColorBean.selectedColor}</p>
    <p>User set hex: #{ColorBean.showHex == true? "yes": "no"}</p>
    <p><h:outputFormat value="#{msgs.hexNotification}"
                    rendered="#{ColorBean.showHex}">
         <core:param value='#{ColorBean.showHex == true? "yes": "no"}' />
       </h:outputFormat>
    </p>
    <fieldset><legend>Colors</legend>
      <utils:list values="#{ColorBean.colors}" listStyle="list" elementStyle="elements"/>
    </fieldset>
  </h:body>
</html>

Вот сгенерированный код.

<!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:utils="http://http://java.sun.com/jsf/composite/utils"><head>
    <title>Show user Color</title>
    <style type="text/css">
      .elements { font-style: italic; }
      .list { margin: 0px; padding:0px;}
    </style></head><body>
    <h1>Show Color</h1>
    <p>User selected: green</p>
    <p>User set hex: no</p>

    <p>
    </p>
    <fieldset><legend>Colors</legend>
      <utils:list values="[Ljava.lang.String;@13e86ec" listStyle="list" elementStyle="elements"></utils:list>
    </fieldset><div id="javax_faces_developmentstage_messages"></div></body>
</html>

Что здесь не так. Я использую учебник для создания этого кода.
http://courses.coreservlets.com/Course-Materials/pdf/jsf/jsf2/JSF2-Looping.pdf
Они сделали похожий пример на последних страницах.

Я надеюсь, вы можете помочь мне

Спасибо

1 Ответ

1 голос
/ 29 сентября 2011

Измените

xmlns: utils = "http://http://java.sun.com/jsf/composite/utils">

на

xmlns: utils =" http://java.sun.com/jsf/composite/utils">

Regs, Rob

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...