2013-06-28 26 views
1

反應我在primefaces的環:不按壓按鈕

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

我RingBean:

@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(新PersonImage( 「person4.png」, 「管理」, 「adminList」));

action is adminList。爲什麼這不起作用?

當我將按鈕更改爲:<p:commandButton value="#{image.name}" action="adminList" /> 一切正常。爲什麼?兩個建築都返回相同的字符

+1

將您的託管bean更改爲'@ ViewScoped',然後重試。 –

回答

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中)僅在屬性期望值表達式時有效。

COMMENT

p:graphicImage您不必處理URL值這種方式。讓JSF爲您處理它。舉例來說,如果你有你的圖像在以下路徑

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

簡單地提供這樣的

/images/someImage.png 

換句話說值,

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

JSF將追加額外的路徑信息當頁面送達時。