嗨,我是JSF的新手,我有点迷路了。这就是我想做的。我有一个页面,在那里我显示了一个展示列表,其中每个展示都有一个表示列表。我希望用户通过单击一个特定的节目转到一个页面,其中只显示链接到该节目的表示。这是我当前的.xhtml页面和两个托管bean。他们现在所做的就是显示所有的节目和列表。
@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;
} }
发布于 2013-03-12 05:31:37
您可以添加一个
`<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>
在第二个页面的bean中需要类似这样的内容
@ManagedBean("bean2")
public class SecondPageBean {
@ManagedProperty(value = "#{param.id}")
private String id;
private String name;
@PostConstruct
public String init() {
// initialieMySecondPageBasedOnIdFromFirstPage(id);
}
}您还可以在第二个页面xhtml中执行此操作,以替换@ManagedProperty(value = "#{param.id}"),
<f:metadata>
<f:viewParam name="id" value="#{bean.id}" />
</f:metadata>然而,如果你想在两个连续的请求之间共享对象/状态,那么可以看看Flash作用域。
https://stackoverflow.com/questions/15346852
复制相似问题