无法使用 EL 和 JSF 从其他列表访问 child 列表
Can't access to child list from other list with EL and JSF
我有一个 "listActivite_realise" 的列表,其中包含一个 "activite" 的列表,我正在尝试迭代每个 "listActivite_realise" 以迭代每个 "activite" 并访问到它的属性。
我正在尝试在 JSF 视图中通过 EL 来完成:
<ui:repeat value="#{documentBean.unDocument.listActivite_realise}"
var="activite_realise" rendered="true">
<ui:repeat value="#{activite_realise.listActivite}"
var="activite" rendered="true">
<h:inputText id="intitule_activite" value="#{activite.intitule}"/>
</ui:repeat>
</ui:repeat>
在第一次重复中,我可以从 var="activite_realise" 访问列表 "listActivite_realise" 的项目,例如 activite_realise.propertie。
但是在我的第二次重复中,列表 "listActivite" 似乎没有绑定 var="activite".
我无法访问 activite.propertie。
我查看了我在堆栈中找到的关于该主题的所有内容。和 google,但似乎我使用了正确的 EL/JSF 语法来实现它。
我也试过用h:DataTable代替ui:repeat。
您知道问题出在哪里吗?
如果问题可能与我没有在这里公开的部分代码有关,请让我去做。
提前致谢。
PS : 对不起我的英语,它不是我的母语。
编辑:
服务器日志中没有错误日志。
child ui:repeat 不会生成 HTML 输入。
Netbeans 让我在 child ui:repeat 中自动完成,但它显示错误的属性。它显示列表 "listActivite_realise" 中的属性,而不是 "listActivite".
中的属性
我的 persistance.xml 文件删除并创建我的数据库。
在托管 Bean 的 @Postconstruct "documentbean" 中,我初始化了我需要的所有记录。它创建 "Document",添加一些由 "Activite" 列表组成的新 "Activite_realise",等等。
它是我迄今为止使用的唯一托管 bean。
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package controllers;
import facades.UtilisateurFacade;
import java.io.Serializable;
import java.util.AbstractList;
import java.util.ArrayList;
import java.util.List;
import javabeans.Activite;
import javabeans.Activite_realise;
import javabeans.CV;
import javabeans.Cadre_formation;
import javabeans.Competence;
import javabeans.Contexte_entreprise;
import javabeans.Document;
import javabeans.Engagament_acteurs;
import javabeans.Evaluation_activite;
import javabeans.Formation_interne;
import javabeans.Le_contrat;
import javabeans.ModuleFormation;
import javabeans.Module_formation_vue;
import javabeans.Page_garde;
import javabeans.Plan_formation;
import javabeans.Planing_alternance;
import javabeans.Postes_competences;
import javabeans.Presentation_apprenti;
import javabeans.Presentation_contrat;
import javabeans.Presentation_entreprise;
import javabeans.Previsionnel_missions_4;
import javabeans.Previsionnel_missions_6;
import javabeans.Previsionnel_missions_9;
import javabeans.Reglement_interieur;
import javabeans.Systeme_dinformation;
import javabeans.Utilisateur;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
/**
*
* @author Skrface
*/
@ManagedBean
@SessionScoped
public class UtilisateurBean implements Serializable {
private Utilisateur utilisateur;
private List<Utilisateur> listUtilisateur;
@EJB
private UtilisateurFacade utilisateurFacade;
/**
* Creates a new instance of UtilisateurBean
*/
public UtilisateurBean() {
}
public UtilisateurBean(Utilisateur utilisateur, List<Utilisateur> listUtilisateur, UtilisateurFacade utilisateurFacade) {
this.utilisateur = utilisateur;
this.listUtilisateur = listUtilisateur;
this.utilisateurFacade = utilisateurFacade;
}
public Utilisateur getUtilisateur() {
return utilisateur;
}
public void setUtilisateur(Utilisateur utilisateur) {
this.utilisateur = utilisateur;
}
public List<Utilisateur> getListUtilisateur() {
return listUtilisateur;
}
public void setListUtilisateur(List<Utilisateur> listUtilisateur) {
this.listUtilisateur = listUtilisateur;
}
public UtilisateurFacade getUtilisateurFacade() {
return utilisateurFacade;
}
public void setUtilisateurFacade(UtilisateurFacade utilisateurFacade) {
this.utilisateurFacade = utilisateurFacade;
}
@PostConstruct
public void init() {
//On crée les pages type formulaire
Plan_formation plan_formation = new Plan_formation();
plan_formation.setUrlImage_plan_formation("dsfhdfhgdjj");
Reglement_interieur reglement_interieur = new Reglement_interieur();
reglement_interieur.setUrlImage_reglement("sDGsdgdSH");
Cadre_formation cadre_formation = new Cadre_formation();
cadre_formation.setDomaine1("Sfsdhsh");
Formation_interne formation_interne = new Formation_interne();
formation_interne.setUrlImage_formation_interne("SDGHGfhdgnhd");
Previsionnel_missions_9 previsionnel_missions_9 = new Previsionnel_missions_9();
previsionnel_missions_9.setActivite_11("DSgSGD");
Previsionnel_missions_6 previsionnel_missions_6 = new Previsionnel_missions_6();
previsionnel_missions_6.setActivite_11("DSgSGD");
Previsionnel_missions_4 previsionnel_missions_4 = new Previsionnel_missions_4();
previsionnel_missions_4.setActivite_11("DSgSGD");
Postes_competences postes_competences = new Postes_competences();
postes_competences.setConseils_maitre_apprenti("DSGgsgdsfhdfhdf");
Systeme_dinformation systeme_dinformation = new Systeme_dinformation();
systeme_dinformation.setCentralisation_interne_externe("qsfqfqge");
Contexte_entreprise contexte_entreprise = new Contexte_entreprise();
contexte_entreprise.setHistorique_entreprise("DhfdHdhqjqjsfj");
Presentation_entreprise presentation_entreprise = new Presentation_entreprise();
presentation_entreprise.setAdresse("rue des youlahoup");
CV cv = new CV();
cv.setUrlImage_cv("sdlkhflsdgf");
Presentation_apprenti presentation_apprenti = new Presentation_apprenti();
presentation_apprenti.setAdresse_pero("12 rue des poulpes");
Planing_alternance plan_alt = new Planing_alternance();
plan_alt.setUrlImage_planing("sqihfoqgfoq");
Le_contrat contrat = new Le_contrat();
contrat.setUrlImage_contrat("www.image.com/image/tralala");
Engagament_acteurs engagement_acteur = new Engagament_acteurs();
engagement_acteur.setUrlImage_signature_apprenti("www.google.fr/image/moon");
Presentation_contrat pres_contrat = new Presentation_contrat();
pres_contrat.setAdresse_perso("12 rue des grenouilles");
Page_garde page = new Page_garde();
page.setNom("prout");
//On crée le document
Document doc = new Document();
//On ajoute aux pages le document
page.setDocument(doc);
pres_contrat.setDocument(doc);
engagement_acteur.setDocument(doc);
contrat.setDocument(doc);
plan_alt.setDocument(doc);
presentation_apprenti.setDocument(doc);
cv.setDocument(doc);
presentation_entreprise.setDocument(doc);
contexte_entreprise.setDocument(doc);
systeme_dinformation.setDocument(doc);
postes_competences.setDocument(doc);
previsionnel_missions_4.setDocument(doc);
previsionnel_missions_6.setDocument(doc);
previsionnel_missions_9.setDocument(doc);
formation_interne.setDocument(doc);
cadre_formation.setDocument(doc);
reglement_interieur.setDocument(doc);
plan_formation.setDocument(doc);
//On crée l'utilisateur et on lui ajoute le document
Utilisateur user = new Utilisateur();
user.setNom("admin");
user.setPrenom("admin");
user.setMot_de_passe("admin");
//On ajoute les pages et l'utilisateur au document
doc.setPage_garde(page);
doc.setUtilisateur(user);
doc.setPresentation_contrat(pres_contrat);
doc.setEngagement_acteurs(engagement_acteur);
doc.setLe_contrat(contrat);
doc.setPlaning_alternance(plan_alt);
doc.setPresentation_apprenti(presentation_apprenti);
doc.setCv(cv);
doc.setPresentation_entreprise(presentation_entreprise);
doc.setContexte_entreprise(contexte_entreprise);
doc.setSysteme_dinformation(systeme_dinformation);
doc.setPostes_competences(postes_competences);
doc.setPrevisionnel_missions_4(previsionnel_missions_4);
doc.setPrevisionnel_missions_6(previsionnel_missions_6);
doc.setPrevisionnel_missions_9(previsionnel_missions_9);
doc.setFormation_interne(formation_interne);
doc.setCadre_formation(cadre_formation);
doc.setReglement_interieur(reglement_interieur);
doc.setPlan_formation(plan_formation);
//Ici on crée les pages multiples style activites_realises
List<Evaluation_activite> lstEvaluation_activite = new ArrayList<>();
List<Activite_realise> lstActivite_realise = new ArrayList<>();
for (int i = 0; i < 2; i++) {
Evaluation_activite evaluation_activite = new Evaluation_activite();
evaluation_activite.setNom_apprenti("Paul");
evaluation_activite.setDocument(doc);
Activite_realise activite_realise = new Activite_realise();
activite_realise.setNom_apprenti("Jack");
activite_realise.setDocument(doc);
//Ici on crée les objets activites et competences
List<Activite> lstActivite = new ArrayList<>();
for (int j = 0; j < 2; j++) {
Activite activite = new Activite();
activite.setIntitule("sdggd_" + i);
activite.setActivite_realise(activite_realise);
activite.setEvaluation_activite(evaluation_activite);
Competence competence = new Competence();
competence.setDescription("sdvsg_" + i);
competence.setActivite(activite);
Competence competence1 = new Competence();
competence1.setDescription("sdgfhjvsg_" + i);
competence1.setActivite(activite);
List<Competence> lstCompetence = new ArrayList<Competence>();
lstCompetence.add(competence);
lstCompetence.add(competence1);
activite.setListCompetence(lstCompetence);
lstActivite.add(activite);
}
evaluation_activite.setListActivite(lstActivite);
evaluation_activite.setListActivite(lstActivite);
lstEvaluation_activite.add(evaluation_activite);
lstActivite_realise.add(activite_realise);
}
doc.setListActivite_realise(lstActivite_realise);
doc.setListEvaluation_activite(lstEvaluation_activite);
//Pages multiples pour les activites à l'école
List<Module_formation_vue> lstModule_formation_vue = new ArrayList<Module_formation_vue>();
for(int i = 0; i < 2; i++)
{
Module_formation_vue module_formation_vue = new Module_formation_vue();
module_formation_vue.setNom_apprenti("sdgsdg");
module_formation_vue.setDocument(doc);
//On crée la liste des objets ModuleFormation
List<ModuleFormation> lstModule_formation = new ArrayList<>();
for(int k = 0; k < 2; k++)
{
ModuleFormation moduleformation = new ModuleFormation();
moduleformation.setExperimenter_entreprise("sdgsdg");
moduleformation.setModule_formation_vue(module_formation_vue);
lstModule_formation.add(moduleformation);
}
module_formation_vue.setListModuleFormation(lstModule_formation);
lstModule_formation_vue.add(module_formation_vue);
}
doc.setListModule_formation_vue(lstModule_formation_vue);
user.setDocument(doc);
//On crée l'utilisateur avec son document et toutes ses pages
utilisateurFacade.create(user);
List<Utilisateur> lstUser = utilisateurFacade.findAll();
this.setListUtilisateur(lstUser);
}
}
多亏了 Nicholas 的建议,我发现我在我的 @Postconstruct 方法中设置了两次相同的列表,这就是为什么列表为空并且什么都没有显示的原因。
感谢大家,尤其是尼古拉斯,对于这个菜鸟的错误感到抱歉。
我有一个 "listActivite_realise" 的列表,其中包含一个 "activite" 的列表,我正在尝试迭代每个 "listActivite_realise" 以迭代每个 "activite" 并访问到它的属性。
我正在尝试在 JSF 视图中通过 EL 来完成:
<ui:repeat value="#{documentBean.unDocument.listActivite_realise}"
var="activite_realise" rendered="true">
<ui:repeat value="#{activite_realise.listActivite}"
var="activite" rendered="true">
<h:inputText id="intitule_activite" value="#{activite.intitule}"/>
</ui:repeat>
</ui:repeat>
在第一次重复中,我可以从 var="activite_realise" 访问列表 "listActivite_realise" 的项目,例如 activite_realise.propertie。
但是在我的第二次重复中,列表 "listActivite" 似乎没有绑定 var="activite".
我无法访问 activite.propertie。
我查看了我在堆栈中找到的关于该主题的所有内容。和 google,但似乎我使用了正确的 EL/JSF 语法来实现它。
我也试过用h:DataTable代替ui:repeat。
您知道问题出在哪里吗?
如果问题可能与我没有在这里公开的部分代码有关,请让我去做。
提前致谢。
PS : 对不起我的英语,它不是我的母语。
编辑: 服务器日志中没有错误日志。
child ui:repeat 不会生成 HTML 输入。
Netbeans 让我在 child ui:repeat 中自动完成,但它显示错误的属性。它显示列表 "listActivite_realise" 中的属性,而不是 "listActivite".
中的属性我的 persistance.xml 文件删除并创建我的数据库。
在托管 Bean 的 @Postconstruct "documentbean" 中,我初始化了我需要的所有记录。它创建 "Document",添加一些由 "Activite" 列表组成的新 "Activite_realise",等等。 它是我迄今为止使用的唯一托管 bean。
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package controllers;
import facades.UtilisateurFacade;
import java.io.Serializable;
import java.util.AbstractList;
import java.util.ArrayList;
import java.util.List;
import javabeans.Activite;
import javabeans.Activite_realise;
import javabeans.CV;
import javabeans.Cadre_formation;
import javabeans.Competence;
import javabeans.Contexte_entreprise;
import javabeans.Document;
import javabeans.Engagament_acteurs;
import javabeans.Evaluation_activite;
import javabeans.Formation_interne;
import javabeans.Le_contrat;
import javabeans.ModuleFormation;
import javabeans.Module_formation_vue;
import javabeans.Page_garde;
import javabeans.Plan_formation;
import javabeans.Planing_alternance;
import javabeans.Postes_competences;
import javabeans.Presentation_apprenti;
import javabeans.Presentation_contrat;
import javabeans.Presentation_entreprise;
import javabeans.Previsionnel_missions_4;
import javabeans.Previsionnel_missions_6;
import javabeans.Previsionnel_missions_9;
import javabeans.Reglement_interieur;
import javabeans.Systeme_dinformation;
import javabeans.Utilisateur;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
/**
*
* @author Skrface
*/
@ManagedBean
@SessionScoped
public class UtilisateurBean implements Serializable {
private Utilisateur utilisateur;
private List<Utilisateur> listUtilisateur;
@EJB
private UtilisateurFacade utilisateurFacade;
/**
* Creates a new instance of UtilisateurBean
*/
public UtilisateurBean() {
}
public UtilisateurBean(Utilisateur utilisateur, List<Utilisateur> listUtilisateur, UtilisateurFacade utilisateurFacade) {
this.utilisateur = utilisateur;
this.listUtilisateur = listUtilisateur;
this.utilisateurFacade = utilisateurFacade;
}
public Utilisateur getUtilisateur() {
return utilisateur;
}
public void setUtilisateur(Utilisateur utilisateur) {
this.utilisateur = utilisateur;
}
public List<Utilisateur> getListUtilisateur() {
return listUtilisateur;
}
public void setListUtilisateur(List<Utilisateur> listUtilisateur) {
this.listUtilisateur = listUtilisateur;
}
public UtilisateurFacade getUtilisateurFacade() {
return utilisateurFacade;
}
public void setUtilisateurFacade(UtilisateurFacade utilisateurFacade) {
this.utilisateurFacade = utilisateurFacade;
}
@PostConstruct
public void init() {
//On crée les pages type formulaire
Plan_formation plan_formation = new Plan_formation();
plan_formation.setUrlImage_plan_formation("dsfhdfhgdjj");
Reglement_interieur reglement_interieur = new Reglement_interieur();
reglement_interieur.setUrlImage_reglement("sDGsdgdSH");
Cadre_formation cadre_formation = new Cadre_formation();
cadre_formation.setDomaine1("Sfsdhsh");
Formation_interne formation_interne = new Formation_interne();
formation_interne.setUrlImage_formation_interne("SDGHGfhdgnhd");
Previsionnel_missions_9 previsionnel_missions_9 = new Previsionnel_missions_9();
previsionnel_missions_9.setActivite_11("DSgSGD");
Previsionnel_missions_6 previsionnel_missions_6 = new Previsionnel_missions_6();
previsionnel_missions_6.setActivite_11("DSgSGD");
Previsionnel_missions_4 previsionnel_missions_4 = new Previsionnel_missions_4();
previsionnel_missions_4.setActivite_11("DSgSGD");
Postes_competences postes_competences = new Postes_competences();
postes_competences.setConseils_maitre_apprenti("DSGgsgdsfhdfhdf");
Systeme_dinformation systeme_dinformation = new Systeme_dinformation();
systeme_dinformation.setCentralisation_interne_externe("qsfqfqge");
Contexte_entreprise contexte_entreprise = new Contexte_entreprise();
contexte_entreprise.setHistorique_entreprise("DhfdHdhqjqjsfj");
Presentation_entreprise presentation_entreprise = new Presentation_entreprise();
presentation_entreprise.setAdresse("rue des youlahoup");
CV cv = new CV();
cv.setUrlImage_cv("sdlkhflsdgf");
Presentation_apprenti presentation_apprenti = new Presentation_apprenti();
presentation_apprenti.setAdresse_pero("12 rue des poulpes");
Planing_alternance plan_alt = new Planing_alternance();
plan_alt.setUrlImage_planing("sqihfoqgfoq");
Le_contrat contrat = new Le_contrat();
contrat.setUrlImage_contrat("www.image.com/image/tralala");
Engagament_acteurs engagement_acteur = new Engagament_acteurs();
engagement_acteur.setUrlImage_signature_apprenti("www.google.fr/image/moon");
Presentation_contrat pres_contrat = new Presentation_contrat();
pres_contrat.setAdresse_perso("12 rue des grenouilles");
Page_garde page = new Page_garde();
page.setNom("prout");
//On crée le document
Document doc = new Document();
//On ajoute aux pages le document
page.setDocument(doc);
pres_contrat.setDocument(doc);
engagement_acteur.setDocument(doc);
contrat.setDocument(doc);
plan_alt.setDocument(doc);
presentation_apprenti.setDocument(doc);
cv.setDocument(doc);
presentation_entreprise.setDocument(doc);
contexte_entreprise.setDocument(doc);
systeme_dinformation.setDocument(doc);
postes_competences.setDocument(doc);
previsionnel_missions_4.setDocument(doc);
previsionnel_missions_6.setDocument(doc);
previsionnel_missions_9.setDocument(doc);
formation_interne.setDocument(doc);
cadre_formation.setDocument(doc);
reglement_interieur.setDocument(doc);
plan_formation.setDocument(doc);
//On crée l'utilisateur et on lui ajoute le document
Utilisateur user = new Utilisateur();
user.setNom("admin");
user.setPrenom("admin");
user.setMot_de_passe("admin");
//On ajoute les pages et l'utilisateur au document
doc.setPage_garde(page);
doc.setUtilisateur(user);
doc.setPresentation_contrat(pres_contrat);
doc.setEngagement_acteurs(engagement_acteur);
doc.setLe_contrat(contrat);
doc.setPlaning_alternance(plan_alt);
doc.setPresentation_apprenti(presentation_apprenti);
doc.setCv(cv);
doc.setPresentation_entreprise(presentation_entreprise);
doc.setContexte_entreprise(contexte_entreprise);
doc.setSysteme_dinformation(systeme_dinformation);
doc.setPostes_competences(postes_competences);
doc.setPrevisionnel_missions_4(previsionnel_missions_4);
doc.setPrevisionnel_missions_6(previsionnel_missions_6);
doc.setPrevisionnel_missions_9(previsionnel_missions_9);
doc.setFormation_interne(formation_interne);
doc.setCadre_formation(cadre_formation);
doc.setReglement_interieur(reglement_interieur);
doc.setPlan_formation(plan_formation);
//Ici on crée les pages multiples style activites_realises
List<Evaluation_activite> lstEvaluation_activite = new ArrayList<>();
List<Activite_realise> lstActivite_realise = new ArrayList<>();
for (int i = 0; i < 2; i++) {
Evaluation_activite evaluation_activite = new Evaluation_activite();
evaluation_activite.setNom_apprenti("Paul");
evaluation_activite.setDocument(doc);
Activite_realise activite_realise = new Activite_realise();
activite_realise.setNom_apprenti("Jack");
activite_realise.setDocument(doc);
//Ici on crée les objets activites et competences
List<Activite> lstActivite = new ArrayList<>();
for (int j = 0; j < 2; j++) {
Activite activite = new Activite();
activite.setIntitule("sdggd_" + i);
activite.setActivite_realise(activite_realise);
activite.setEvaluation_activite(evaluation_activite);
Competence competence = new Competence();
competence.setDescription("sdvsg_" + i);
competence.setActivite(activite);
Competence competence1 = new Competence();
competence1.setDescription("sdgfhjvsg_" + i);
competence1.setActivite(activite);
List<Competence> lstCompetence = new ArrayList<Competence>();
lstCompetence.add(competence);
lstCompetence.add(competence1);
activite.setListCompetence(lstCompetence);
lstActivite.add(activite);
}
evaluation_activite.setListActivite(lstActivite);
evaluation_activite.setListActivite(lstActivite);
lstEvaluation_activite.add(evaluation_activite);
lstActivite_realise.add(activite_realise);
}
doc.setListActivite_realise(lstActivite_realise);
doc.setListEvaluation_activite(lstEvaluation_activite);
//Pages multiples pour les activites à l'école
List<Module_formation_vue> lstModule_formation_vue = new ArrayList<Module_formation_vue>();
for(int i = 0; i < 2; i++)
{
Module_formation_vue module_formation_vue = new Module_formation_vue();
module_formation_vue.setNom_apprenti("sdgsdg");
module_formation_vue.setDocument(doc);
//On crée la liste des objets ModuleFormation
List<ModuleFormation> lstModule_formation = new ArrayList<>();
for(int k = 0; k < 2; k++)
{
ModuleFormation moduleformation = new ModuleFormation();
moduleformation.setExperimenter_entreprise("sdgsdg");
moduleformation.setModule_formation_vue(module_formation_vue);
lstModule_formation.add(moduleformation);
}
module_formation_vue.setListModuleFormation(lstModule_formation);
lstModule_formation_vue.add(module_formation_vue);
}
doc.setListModule_formation_vue(lstModule_formation_vue);
user.setDocument(doc);
//On crée l'utilisateur avec son document et toutes ses pages
utilisateurFacade.create(user);
List<Utilisateur> lstUser = utilisateurFacade.findAll();
this.setListUtilisateur(lstUser);
}
}
多亏了 Nicholas 的建议,我发现我在我的 @Postconstruct 方法中设置了两次相同的列表,这就是为什么列表为空并且什么都没有显示的原因。
感谢大家,尤其是尼古拉斯,对于这个菜鸟的错误感到抱歉。