1

私はプライムフェイスにリングを持っています:

    <h:form>
        <p:ring id="ring" value="#{ringBean.images}" var="image"
                styleClass="image-ring" easing="easeInOutBack">
            <p:graphicImage value="./../../images/#{image.image}" width="150" height="150"/>
            <p:commandButton value="#{image.name}" action="#{image.action}" />
        </p:ring>
    </h:form>

私のリングビーン:

@ManagedBean
@RequestScoped
public class RingBean implements Serializable{ 

    private List<PersonImage> images;
    private PersonImage selectedPerson;

    public RingBean() {
        images = new ArrayList<PersonImage>();
        images.add(new PersonImage("person3.png", "Pacjent", "patientList"));
        images.add(new PersonImage("person4.png", "Admin", "adminList"));
        images.add(new PersonImage("person5.png", "Lekarz", "doctorList"));
        images.add(new PersonImage("person6.png", "Sekretarka", "secretaryList"));
        images.add(new PersonImage("person7.png", "Nieaktywni", "inactiveList"));
    }

    public List<PersonImage> getImages() {
        return images;
    }       

    public PersonImage getSelectedPerson() {
        return selectedPerson;
    }

    public void setSelectedPerson(PersonImage selectedPerson) {
        this.selectedPerson = selectedPerson;
    }

}

PersonImage クラス:

public class PersonImage {

    String image;
    String name;
    String action;

    public PersonImage() {
    }

    public PersonImage(String image, String name, String action) {
        this.image = image;
        this.name = name;
        this.action = action;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAction() {
        return action;
    }

    public void setAction(String action) {
        this.action = action;
    }

}

顔構成:

<navigation-case>
            <from-outcome>adminList</from-outcome>
            <to-view-id>/protected/admin/adminList.xhtml</to-view-id>
            <redirect/>
        </navigation-case>
        <navigation-case>
            <from-outcome>doctorList</from-outcome>
            <to-view-id>/protected/admin/doctorList.xhtml</to-view-id>
            <redirect/>
        </navigation-case>
        <navigation-case>
            <from-outcome>patientList</from-outcome>
            <to-view-id>/protected/admin/patientList.xhtml</to-view-id>
            <redirect/>
        </navigation-case>
        <navigation-case>
            <from-outcome>secretaryList</from-outcome>
            <to-view-id>/protected/admin/secretaryList.xhtml</to-view-id>
            <redirect/>
        </navigation-case>

ボタンを押しても反応なし。しかし、なぜ?このアクションをボタンに追加しました:

そしてリングに追加しました: images.add(new PersonImage("person4.png", "Admin", "adminList"));

アクションは adminList です。これが機能しないのはなぜですか?

ボタンを次のように変更すると、<p:commandButton value="#{image.name}" action="adminList" /> すべてが機能します。なんで?どちらの構造も同じ文字列を返しました。

4

1 に答える 1

1

あなたの

<p:commandButton value="#{image.name}" action="#{image.action}" />

に変更image.actionimage.getActionます。

<p:commandButton value="#{image.name}" action="#{image.getAction}" />

actionはメソッド式を期待しているため、完全なメソッド名を指定する必要がありますgetAction。省略名action(image.action など) は、属性が値式を期待している場合にのみ有効です。

コメント

このp:graphicImage方法で URL 値を処理する必要はありません。JSF に任せてください。たとえば、次のパスに画像がある場合

<context-path>/web pages/images/someImage.png 

このような値を提供するだけです

/images/someImage.png 

言い換えると、

<p:graphicImage value="/images/#{image.image}"> 

JSF は、ページが提供されるときに追加のパス情報を追加します。

于 2013-06-28T23:35:08.057 に答える