2014-01-06 55 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實現方法具用200px值調用d,但不調用setChecklist(ListaChecklistWrapper checklist),並且組件內的清單屬性始終爲空。

如果我做#{CheckBean.checklists[0].nome}<checando:exibi...標記它的工作原理之外。所以,該對象不是空的......它只是一個缺少對set方法的調用。

有什麼我失蹤?

鑽嘴魚科2.1.13(20120907-1514)和Java版本 「1.7.0_25」。

謝謝。

+1

我猜,給'nome'直接作爲參數傳入的組件不會再工作?(像'setChecklistNome(字符串諾姆)'。如果是這樣,則可能是給來自'Java的不同直接的參數是一個挑戰.lang.String'。你試過從,而不是直接寫入'UINamingContainer'給出參數'cc.attrs.checklist'? –

+0

謝謝@ L-雷,張貼作爲一個答案,所以我可以檢查你的解決方案正確。 –

+0

A Upvote也將讚賞。 :-) –

回答

1

我想,直接給諾姆作爲參數傳入的組件不會再工作? (類似於setChecklistNome(String nome)

如果是這樣,給予與java.lang.String不同的直接參數可能會遇到一些挑戰,您是否試圖給參數cc.attrs.checklist而不是直接寫入UINamingContainer