Это уже должно быть поведение по умолчанию.Вам не нужно ничего менять в данном примере кода, предполагая, что метод toString()
правильно реализован на CustomClass
.Однако, если он возвращает HTML, вам нужно добавить escape="false"
к выходному тексту, чтобы предотвратить автоматический экранирование JSF (что делает для предотвращения XSS-атак на ввод, управляемый пользователем):
<h:outputText value="#{contact.customTypeProperty}" escape="false" />
Это, однако, не обязательно лучшая практика.Вы должны контролировать презентацию на стороне вида, а не на toString()
на стороне модели.Например, предполагая, что CustomClass
имеет в свою очередь два свойства foo
и bar
, и вы хотите представить его в таблице:
<h:panelGrid columns="2">
<h:outputText value="Foo" />
<h:outputText value="#{contact.customTypeProperty.foo}" />
<h:outputText value="Bar" />
<h:outputText value="#{contact.customTypeProperty.bar}" />
</h:panelGrid>
Если вы сделали это, чтобы избежать повторения кода,тогда вы должны использовать файл включения или файл тегов.Смотрите также Когда использовать, файлы тегов, составные компоненты и / или пользовательские компоненты?