3

私はselectOneMenuいくつかの写真と文字列を表示するために使用しています。写真は私が持っている表示のみを目的としています(つまり、送信時にそれらとは何の関係もありません)画像の横に文字列を設定するだけで、設定に競合があります必要itemValueな文字列に変換するf:selectItemsと、画像がまったく表示されなくなります。つまり、selectItemコンバーターを使用せずに、選択した文字列の値のみを送信したいのです。

JSF コード:

<p:selectOneMenu id="SkinChooser" value="#{personBean.ObjectDTO.personDescription.skin}"
        panelStyle="width:150px" effect="fade" var="s"
        style="width:160px" converter="#{personBean.converter}">
        <f:selectItem itemLabel="Select One" itemValue="" />
        <f:selectItems value="#{missedPersonBean.selectedSkins}"
        var="skin" itemLabel="#{skin.skinType}" itemValue="#{skin}" />
                <p:column>
                      <p:graphicImage value="/resources/images/skin/#{s.skinPhoto}"
                                width="40" height="50" />
                </p:column>
                <p:column> 
                      #{s.skinType}  
                </p:column>
</p:selectOneMenu>

Skin.Java

public class Skin {
String skinPhoto;
String skinType;

public Skin() {
}

public Skin(String photo, String type) {
    this.skinPhoto = photo;
    this.skinType = type;
}

public String getSkinPhoto() {
    return skinPhoto;
}

public void setSkinPhoto(String skinPhoto) {
    this.skinPhoto = skinPhoto;
}

public String getSkinType() {
    return skinType;
}

public void setSkinType(String skinType) {
    this.skinType = skinType;
    }
}

personBean.Java

@ManagedBean(name = "personBean")
@SessionScoped
public class ReportPerson {
private Skin skin;
private static List<Skin> selectedSkins;


static {
System.err.println("Array is filled");
selectedSkins = new ArrayList<Skin>();
selectedSkins.add(new Skin("1", "Pale white"));
selectedSkins.add(new Skin("2", "Fair white"));
selectedSkins.add(new Skin("3", "Light brown"));
selectedSkins.add(new Skin("4", "Moderate brown"));
selectedSkins.add(new Skin("5", "Dark brown"));
selectedSkins.add(new Skin("6", "Deeply pigmented"));
System.err.println("Finished Filling");

}

public List<Skin> getSelectedSkins() {
return selectedSkins;
}

 public void setSelectedSkins(List<Skin> selectedSkins) {
 this.selectedSkins = selectedSkins;
 }

public Skin getSkin() {
return skin;
 }

 public void setSkin(Skin skin) {this.skin = skin;}

 }
4

0 に答える 0