2010-06-07 3 views
1

selectItems가 포함 된 selectManyListbox를 사용하여 JSF 작성 양식을 얻었습니다 (프로젝트에 사용할 수있는 모든 태그가 있어야 함). selectItems 목록은 항상 비어 있습니다. 페이지가 렌더링 될 때 Listbox에는 아무 것도 없습니다. 여전히, backing 빈의 목록은 3 개의 항목을 포함하고있다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?JSF 2.0 h : selectManyListbox f : selectItems - 항상 비어 있습니다.

백킹 빈 :

@ManagedBean(name = "createProjectBean") 
@RequestScoped 
public class CreateProjectBean { 

public Project getProject() { 
    return project; 
} 

public void setProject(Project project) { 
    this.project = project; 
} 

private Project project; 
private IProjectService projectService; 
private FacesContext facesContext; 
private MessageFactory mf; 
private List<Tag> tags; 

public CreateProjectBean() { 

project = new Project(); 
projectService = (IProjectService)ServiceFinder.getInstance() 
.findBean("projectService"); 
mf = new MessageFactory("properties.projects.messages"); 
tags = projectService.getTags(); 
} 

/* should be the source of tags */ 
public void setTags(List<Tag> tags) { 
    this.tags = tags; 
} 

public List<Tag> getTags() { 
    return tags; 
    } 
} 

그리고 페이지 :

<f:view> 
    <h:outputText id="error" rendered="false" /> 
    <h:message styleClass="errorMessage" for="error" /> 
<h:form id="creationForm" > 
<h:panelGrid columns="2" width="420"> 

    /* blah, blah, set name and stuff */ 

       <h:selectManyListbox id="box" value = "#{createProjectBean.project.tags}"> 
        <f:converter converterId="tag" /> 
        <f:selectItems value="@{createProjectBean.tags}" 
        var="tag" 
        itemValue="#{tag}" 
        itemLabel="${tag.name}" /> 
       </h:selectManyListbox> 

    <f:verbatim><br/></f:verbatim> 
    <h:commandButton value="Create" styleClass="formButton" action="#{createProjectBean.create}"/> 
</h:panelGrid> 
</h:form> 
</f:view> 

내가 해당 페이지로 analogia 당을하려고 노력 : http://digitaljoel.wordpress.com/2010/01/11/jsf-2-custom-converter/

내가 작성한 컨버터는 아직 테스트를 거치지 않았다.

답변

4

EL이 위조입니다. 어디서나 #{} 표기법을 사용해야합니다.

<f:selectItems value="#{createProjectBean.tags}" 
       var="tag" 
       itemValue="#{tag}" 
       itemLabel="#{tag.name}" /> 
+1

HAH에 의해

<f:selectItems value="@{createProjectBean.tags}" var="tag" itemValue="#{tag}" itemLabel="${tag.name}" /> 

교체합니다. 참으로 가짜. '@ {..}'은 실제로 무엇입니까? (+1) – Bozho

관련 문제