Собственные JSF-компоненты с несколькими полями ввода
У меня гораздо более сложная проблема, но я стараюсь привести ее к минимальному примеру, который демонстрирует основные вещи.
Мой BeanClass управляет некоторым Entity/POJO, где этот POJO снова содержит некоторые другие Entities/POJO
public class MyEntityA implements Serializable {
String attributA;
MyEntityB b;
// Getter .. Setter
}
public class MyEntityB implements Serializable {
String attributB
// Getter .. Setter
}
В моем JSF мне нужны поля ввода для всех атрибутов, таких как
<p:inputTextarea value="#{myBean.entityA.attributeA}" />
<p:inputText value="#{myBean.entityA.b.attributeB}" />
Вместо этого я хочу написать что-то похожее на
<my:custom property="#{myBean.entiyA}" />
Используя собственный файл тегов facelet, я должен назначить каждый отдельный атрибут, который я хочу изменить, поэтому я получаю выгоду от неудовлетворенности, потому что я должен касаться каждого из моих тегов, если меняются мои EntityClasses. И это один момент, который я хочу избежать.
При использовании составного компонента у меня проблема в том, что он отображается как один компонент, но это разрушает весь дизайн моей страницы, если я хочу использовать это, например, в PanelGrid.
Можно ли добиться этого с помощью пользовательского компонента и обработчика тегов? Или это даже более простой способ? Как может выглядеть решение для моего короткого примера с использованием пользовательского компонента и обработчика тегов?
В конце концов я должен как-то зациклить эти компоненты.
<c:forEach var="item" items="#{myBean.entityACollection}">
<my:custom property="#{item}"/>
</c:forEach>
должно быть так же, как я пишу что-нибудь вроде
<p:inputTextarea value="#{myBean.firstEntityA.attributeA}" />
<p:inputText value="#{myBean.firstEntityA.b.attributeB}" />
<p:inputTextarea value="#{myBean.secondEntityA.attributeA}" />
<p:inputText value="#{myBean.secondEntityA.b.attributeB}" />
<p:inputTextarea value="#{myBean.thirdEntityA.attributeA}" />
<p:inputText value="#{myBean.thirdEntityA.b.attributeB}" />
...
Если вам нужна дополнительная информация или есть проблемы с пониманием моего вопроса, пожалуйста, сообщите!
Я использую PrimeFaces 4.0 иMojarra 2.1.26