2013-01-11 3 views
0

다음 오류가 발생합니다. Conversion Error setting value 'home' for 'null Converter'.Home은 표시되는 내용의 문자열 표현입니다.JSF 용 변환기

나에게 이것은 의미가 없습니다. 다음은 JSF 코드 :

<h:selectOneMenu value="#{createResourceDialogController.selectedDir}"> 
    <f:selectItems value="#{createResourceDialogController.dirs}" /> 
</h:selectOneMenu> 

그리고 여기 ManagedBean은 코드입니다 : 나를 위해

public Map<String,IDir> getDirs() 
{ 
    Map<String,IDir> retVal = new LinkedHashMap<String, IDir>(); 
    List<IDir> dirs; 
    if(isCompanyResource) 
    { 
     dirs = convertToIDir(getCompanyDir()); 
    } 
    else 
    { 
     dirs = convertToIDir(getUserDir()); 
    } 
    for(IDir iDir : dirs) 
    { 
     retVal.put(iDir.getDir(),iDir); 
    } 
    return retVal; 
} 

public IDir getSelectedDir() 
{ 
    return selectedDir; 
} 

public void setSelectedDir(IDir selectedDir) 
{ 
    this.selectedDir = selectedDir; 
} 

, 모든 종류가 일치하는지 표시하고 컨버터도 필요하지 않습니다. getDirs()은 값이 IDir 인 맵을 반환합니다. setter가 호출되면 IDir이 표시됩니까? 어떤 아이디어?

답변

3

JSF는 의 <h:selectOneMenu />을 일반 텍스트의 값 및 레이블 속성 만있는 HTML로 변환합니다. 따라서 변환기를 사용해야하거나 ID 레이블 값이 SelectItem 인 목록을 만들 수 있습니다. 양식을 받으면 ID가 IDir 인 페이지 만 다시로드하십시오.

@ManagedBean 
@ViewScoped 
public class CreateResourceDialogController { 

    private List<SelectItem> options; 

    private String selectedDirId; 

    private void initBean(){ 
     options = new ArrayList<SelectItem>(); 
     SelectItem item1 = new SelectItem(dir.getId.toString(), dir.getName()); 
     options.add(item1); 
    } 

    public List<SelectItem> getOptions(){ 
     return options; 
    } 

    public void setSelectedDirId(String dirId){ 
     selectedDirId = dirId; 
    } 

    public String getSelectedDirId(){ 
     return selectedDirId; 
    } 
} 

백업

XHTML은

<h:selectOneMenu value="#{createResourceDialogController.selectedDirId}"> 
    <f:selectItems value="#{createResourceDialogController.options}" /> 
</h:selectOneMenu> 

tutorial을 살펴 보자. 그러나이 코드를 여러 번 재사용하려는 경우에는 변환기를 통해 깨끗한 솔루션으로 고려해야합니다.

+0

대단히 감사합니다! 그건 나에게 의미가있다. – user489041