1

selectItemsを内部に含むselectManyListboxを使用したJSF作成フォームがあります(プロジェクトで使用可能なすべてのタグが含まれている必要があります)。ただし、selectItemsリストは常に空です。ページがレンダリングされるとき、リストボックスには何もありません。それでも、バッキングBeanのリストには3つのエントリが含まれています(チェック済み)。私は何が間違っているのですか?

バッキングBean:

@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>

私はこのページへのアナロジーに従ってそれをやろうとしました:http: //digitaljoel.wordpress.com/2010/01/11/jsf-2-custom-converter/

私が書いたコンバーターはまだテストされていません。

4

1 に答える 1

4

あなたのELは偽物です。#{}どこでも表記を使用する必要があります。交換

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

<f:selectItems value="#{createProjectBean.tags}"
               var="tag"
               itemValue="#{tag}"
               itemLabel="#{tag.name}" />
于 2010-06-07T15:50:54.550 に答える