2013-03-11 55 views
0

嗨,我是新来的JSF我有点失落。这是我想要做的。 我有一个页面,其中显示每个节目都有一个表示列表的节目列表。我希望用户通过点击某个特定的节目来进入只显示节目的链接表示的页面。这里是我当前的.xhtml页面和我的两个托管的bean。他们现在所做的是显示所有节目和所有列表。JSF通过一个列表显示在另一个页面

@Entity 
@Table(name = "SHOW_SPECTACLE") 
public class Spectacle implements Serializable { 
    private static final long serialVersionUID = 1L; 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "ID") 
    private Long id; 

    @ElementCollection 
    @CollectionTable(name = "T_TYPES_SPECTACLE") 
    @Column(name = "TYPES_SPECTACLE") 
    private List<String> typesSpectacle; 

    @Column(name = "NOM_SPECTACLE") 
    private String nomSpectacle; 

    @Column(name = "DESCRIPTION") 
    private String description; 
    @Column(name = "LIEN_VIDEO") 
    private String lienVideo; // type Blop 
    @Column(name = "LIEN_IMAGE") 
    private String lienImage; 

    @OneToOne 
    private Artiste artiste; 
    @OneToMany(mappedBy = "spectacle") 
    private List<Representation> representations; 

} 

public class Representation implements Serializable { 
    private static final long serialVersionUID = 1L; 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "ID") 
    private Long id; 
    @Column(name = "NB_BILLETS_DISPO") 
    private Integer nbBilletsDispo; 
    @Column(name = "PRIX") 
    private Float prix; 
    @Column(name = "NOM") 
    private String nom; 
    @Column(name = "ADRESSE") 
    private String adresse; 
    @Column(name = "DATE_DEBUT") 
    @Temporal(TemporalType.DATE) 
    private Date dateDebut; 
    @Column(name = "DATE_FIN") 
    @Temporal(TemporalType.DATE) 
    private Date dateFin; 
    @Column(name = "IS_ANNULATION") 
    private Boolean isAnnulation; 

    @OneToOne(mappedBy = "representation") 
    private Salle salle; 

    @ManyToOne 
    private Spectacle spectacle; 

} 

是显示所有的显示XHTML页面的部分,我在里面使用一些primefaces组件

<h:form id="form"> 

     <p:dataGrid var="spec" value="#{menuCtrl.spectacles}" columns="3" 
        rows="12" paginator="true" 
        paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" 
        rowsPerPageTemplate="9,12,15"> 

      <p:panel header="#{spec.nomSpectacle}" style="text-align:center"> 

       <h:panelGrid columns="1" style="width:100%"> 
        <ui:param name="imgPath" value="images:#{spec.artiste.lienPhoto}.png" /> 
        <p:graphicImage value="#{resource[imgPath]}" /> 

        <h:outputText value="#{spec.description}" /> 

<!--      <p:commandLink update=":form:carDetail" oncomplete="carDialog.show()" title="View Detail"> 
          <h:outputText styleClass="ui-icon ui-icon-search" style="margin:0 auto;" /> 
          <f:setPropertyActionListener value="{spec}" 
                 target="{tableBean.selectedCar}" /> 
        </p:commandLink> --> 
       </h:panelGrid> 
      </p:panel> 

     </p:dataGrid> 
    </h:form> 

编辑这里是bean使用

@ManagedBean(name = "menuCtrl") 
@ApplicationScoped 
public class MenuControleur extends AbstractControleur implements Serializable { 
private static final Logger log = Logger.getLogger(ApplicationControleur.class); 

// cache 
private List<Spectacle> spectacles; 
private List<Representation> representations; 
private List<Artiste> artistes; 


private List<Representation> representationsFiltrees; 


@PostConstruct 
public void init() { 
    // instanciation couche [métier] 
    super.initStubsPresentation(); 

    this.spectacles = this.stubsDaoPresentation.getAllSpectacle(); 
    this.representations = this.stubsDaoPresentation.getAllRepresentation(); 
    this.artistes = this.stubsDaoPresentation.getAllArtistes(); 

    log.info("sonar source Spectacle 1: " + this.spectacles); 
    log.info("sonar source Representation 1: " + this.representations); 
    log.info("sonar source Artiste 1: " + this.artistes); 
}  

public List<Representation> getRepresentationsFiltrees() { 
    return representationsFiltrees; 
} 

public void setRepresentationsFiltrees(List<Representation> representationsFiltrees) { 
    this.representationsFiltrees = representationsFiltrees; 
} 



public String doHomme(){ 
    return "eticket.index"; 
} 

public String doCart(){ 
    return "eticket.pageCart"; 
} 

public String doShow(){ 
    return "eticket.pageShows"; 
} 

/** 
* Creates a new instance of MenuControleur 
*/ 
public MenuControleur() { } 

public List<Spectacle> getSpectacles() { 
    return spectacles; 
} 

public void setSpectacles(List<Spectacle> spectacles) { 
    this.spectacles = spectacles; 
} 

public List<Representation> getRepresentations() { 
    return representations; 
} 

public void setRepresentations(List<Representation> representations) { 
    this.representations = representations; 
} 

public List<Artiste> getArtistes() { 
    return artistes; 
} 

public void setArtistes(List<Artiste> artistes) { 
    this.artistes = artistes; 
}  

}

+0

,我建议你看看[此链接](http://balusc.blogspot.com/2006/06/communication-in-jsf.html),或在[这一个](HTTP ://balusc.blogspot.com/2011/09/communication-in-jsf-20.html)如果您使用的是JSF2。另外,请注意,您目前显示的不是托管bean的代码,而是您实体的代码。 – Gamb 2013-03-11 19:29:06

+0

但是,不能回答你如何从一个页面到另一个页面。 – user2133558 2013-03-11 20:04:02

+0

您提供的xhtml与您想要实现的功能不匹配。 – 2013-03-11 20:09:22

回答

0

您可以添加一个

`<h:link value="Second Page" outcome="secondpage" > 
    <f:param name="id" value="#{bean.id}" /> 
</h:link> 

`

或在您的第一页<a href="secondpage.jsf?id=#{bean.id}">Second Page</a>

您需要在豆你的第二个页面是这样的

@ManagedBean("bean2") 
public class SecondPageBean { 

    @ManagedProperty(value = "#{param.id}") 
    private String id; 
    private String name; 

    @PostConstruct  
    public String init() { 
    // initialieMySecondPageBasedOnIdFromFirstPage(id); 
    } 
} 

你也可以做到这一点在你的secondpage XHTML更换@ManagedProperty(value = "#{param.id}")

<f:metadata> 
    <f:viewParam name="id" value="#{bean.id}" /> 
</f:metadata> 

但是,如果你wan t在两个连续请求之间共享对象/状态,然后查看Flash范围。

Understand Flash Scope in JSF2

+0

嗨,谢谢你的回复。我会查找您的示例,但我试图模拟@ Xtrem-Biker给出的示例,这是我正在尝试执行的操作。 我将放置一个命令按钮,它将调用MenuControlleur中的一个新方法,该方法必须将spec.representations放入新列表属性中,并将用户重定向到rep页面。重定向正在工作,但未通过列表。 – user2133558 2013-03-11 21:45:23

+0

RequestScope bean不会在重定向之间持续存在,但正如我在您的示例中看到的那样,您正在使用applicationcoped bean,因此您应该能够在任何页面上获取并存储该bean的值。 – 2013-03-11 23:27:49

相关问题