Передача внутренней разметки в теги Facelet

Я совсем начинающий разработчик JSP/Facelets, и мне нужно создать новый настраиваемый тег, который расширяет стандартный commandButton ICEFaces. Я хотел бы знать, как передать разметку, включенную между началом и концом пользовательского тега, в commandButton. Это необходимо, когда нужно иметь дело с f:param.

Пример:

<myNS:myTag ...>
    <f:param name="name" value="value" />
    <f:param name="name2" value="value2" />
</myNS:myTag>

Должен отображаться как

<myMarkup>
    <ice:commandButton ...>
        <f:param name="name" value="value" />
        <f:param name="name2" value="value2" />
    </ice:commandButton>
<myMarkup>

Личное примечание: я очень запутался в этих технологиях. Я все еще думаю в .NET 4 :(


person usr-local-ΕΨΗΕΛΩΝ    schedule 21.04.2011    source источник


Ответы (2)


Попробуйте изменить требования. То, что вы хотите сделать, СЛОЖНО и действительно не очень хороший способ начать работу с JSF (или JSP). JSP + JSF — это не одна простая технология, такая как ASP.NET, а скорее две разные технологии, наслоенные сложным образом (это одна из причин, по которой комбинация не рекомендуется). Даже если вам удастся сделать то, что вы хотите, вас будут кусать разные жизненные циклы объектов JSF и тегов JSP, поэтому, вероятно, все равно это не будет работать так, как вы хотите.

person fdreger    schedule 21.04.2011
comment
+1, так как мне очень не хватает ASP.NET. Я немного изучил и, кажется, мне пришлось реализовать тег через рендерер. Я пройду еще немного - person usr-local-ΕΨΗΕΛΩΝ; 21.04.2011
comment
@djechelon: Значит, нельзя перейти на Facelets? JSP ужасен как технология просмотра для JSF. - person BalusC; 21.04.2011
comment
На самом деле, я только что обнаружил, что, полагая, что я создаю теги JSP, я создаю теги Facelet. Как вы думаете, то, о чем я прошу, возможно с фейслетами? Я только что увидел, что файл taglib начинается с элемента facelet-taglib... Думаю, мне следует перефразировать вопрос. - person usr-local-ΕΨΗΕΛΩΝ; 22.04.2011

Судя по обновленному вопросу и комментариям, вы, кажется, действительно используете Facelets (файлы .xhtml) вместо JSP (файлы .jsp). В этом случае вы можете использовать <ui:insert /> для объявления местоположения вставки дочерних элементов пользовательского тега.

person BalusC    schedule 22.04.2011