2014-01-06 4 views
0

Вот мой 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".

Спасибо.

+1

Я полагаю, что «nome' непосредственно как параметр в компонент снова работает? (Что-то вроде' setChecklistNome (String nome) '. Если это так, может возникнуть проблема с предоставлением прямых параметров, отличных от' java .lang.String'. Вы пытались передать параметры как 'cc.attrs.checklist' вместо того, чтобы писать его непосредственно в' UINamingContainer'? –

+0

Спасибо @ L-Ray, напишите ему как ответ, чтобы я мог проверить ваши решение как правильное. –

+0

A n Upvote будет также оценен. :-) –

ответ

1

Я думаю, давая ном непосредственно как параметр в компонент, снова работает? (Что-то вроде setChecklistNome (String нома).

Если да, то может быть проблема с предоставлением прямых параметров, отличных от java.lang.String. Пытались ли вы дать параметры, как cc.attrs.checklist вместо писать его непосредственно в UINamingContainer ?