Вот мой FacesComponent класс:FacesComponent, без набора под названием
@FacesComponent("ExibicaoChecklistComponent")
public class ExibicaoChecklistComponent extends UINamingContainer {
private ListaChecklistWrapper checklist;
private String altura;
public ListaChecklistWrapper getChecklist() {
return checklist;
}
public void setChecklist(ListaChecklistWrapper checklist) {
this.checklist = checklist;
}
public String getAltura() {
return altura;
}
public void setAltura(String altura) {
this.altura = altura;
}
}
и XHTML
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:cc="http://java.sun.com/jsf/composite"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:pretty="http://ocpsoft.com/prettyfaces"
xmlns:ui="http://java.sun.com/jsf/facelets">
<cc:interface componentType="ExibicaoChecklistComponent">
<cc:attribute name="altura" default="300px" type="java.lang.String" />
<cc:attribute name="checklist" required="true" />
</cc:interface>
<cc:implementation>
Altura: #{cc.altura}
Checklist: #{cc.checklist.nome}
</cc:implementation>
и, наконец, использование:
<checando:exibicaoChecklist altura="200px" checklist="#{CheckBean.checklists[0]}" />
setAltura
мето d вызывается с значением 200px, но setChecklist(ListaChecklistWrapper checklist)
не вызывается, а атрибут контрольного списка всегда является нулевым внутри компонента.
Если у меня #{CheckBean.checklists[0].nome}
за пределами <checando:exibi...
, это работает. Таким образом, объект не является нулевым ... это всего лишь недостающий вызов метода set.
Есть ли что-нибудь, что мне не хватает?
Mojarra 2.1.13 (20120907-1514) и java-версия "1.7.0_25".
Спасибо.
Я полагаю, что «nome' непосредственно как параметр в компонент снова работает? (Что-то вроде' setChecklistNome (String nome) '. Если это так, может возникнуть проблема с предоставлением прямых параметров, отличных от' java .lang.String'. Вы пытались передать параметры как 'cc.attrs.checklist' вместо того, чтобы писать его непосредственно в' UINamingContainer'? –
Спасибо @ L-Ray, напишите ему как ответ, чтобы я мог проверить ваши решение как правильное. –
A n Upvote будет также оценен. :-) –