Primefaces 在panelgrid而不是datatable中调用动态值

Primefaces 在panelgrid而不是datatable中调用动态值,primefaces,Primefaces,我想在panelgrid中调用动态值,而不是datatable。在datatable中,我得到了动态值,但我想在panelgrid中调用动态值。如果有人知道如何访问panelgrid中的动态值,请给我答案 java类: public List<Student> getStuDetails() { Transaction trns = null; students = new ArrayList<Student>();

我想在panelgrid中调用动态值,而不是datatable。在datatable中,我得到了动态值,但我想在panelgrid中调用动态值。如果有人知道如何访问panelgrid中的动态值,请给我答案

java类:

  public List<Student> getStuDetails() {
            Transaction trns = null;
            students = new ArrayList<Student>();        
            Session session = getSession();
            try {
                trns = session.beginTransaction();
                String sql = "select name,age,profession from student where sid = " + sid;
                SQLQuery query = session.createSQLQuery(sql).addScalar("name", new StringType()).addScalar("age", new IntegerType()).addScalar("profession", new StringType());
                List<Object[]> rows = query.list();
                for (Object[] row : rows) {
                    Student student = new Student();
                    student.setName(row[0].toString());
                    student.setAge(Integer.parseInt(row[1].toString()));
            student.setProfession(row[2].toString());                
                    students.add(student);
                }                      
                trns.commit();
            } catch (HibernateException e) {
                e.printStackTrace();           
                trns.rollback();
            } finally {
                session.flush();
                session.close();
            }
            return students;
        }
public List getStuDetails(){
事务trns=null;
学生=新数组列表();
Session=getSession();
试一试{
trns=session.beginTransaction();
String sql=“从学生中选择姓名、年龄、职业,其中sid=“+sid;
SQLQuery query=session.createSQLQuery(sql).addScalar(“name”,new StringType()).addScalar(“age”,new IntegerType()).addScalar(“profession”,new StringType());
List rows=query.List();
对于(对象[]行:行){
学生=新生();
student.setName(行[0].toString());
setAge(Integer.parseInt(行[1].toString());
student.setProfession(第[2]行).toString();
学生。添加(学生);
}                      
trns.commit();
}捕获(休眠异常e){
e、 printStackTrace();
trns.rollback();
}最后{
session.flush();
session.close();
}
留学生;
}
jsf代码:

<p:panelGrid id="pgrid" columns="2">
    <p:outputLabel value="Name:"/>
        <p:outputLabel value="Austin"/>
        <p:outputLabel value="Age:"/>
        <p:outputLabel value="26"/>
        <p:outputLabel value="Profession"/>
        <p:outputLabel value="job"/>
</p:panelGrid>

我修改了你的代码,它对我有用。我创建了三个变量sname,sage和sprofession,还需要创建getter/setter,这里我使用的托管bean名称是“student”

更新的Java类:

private String sname;
private Integer sage;
private Integer sprofession;    
public List<Student> getStuDetails() {
            Transaction trns = null;
            students = new ArrayList<Student>();        
            Session session = getSession();
            try {
                trns = session.beginTransaction();
                String sql = "select name,age,profession from student where sid = " + sid;
                SQLQuery query = session.createSQLQuery(sql).addScalar("name", new StringType()).addScalar("age", new IntegerType()).addScalar("profession", new StringType());
                List<Object[]> rows = query.list();
                for (Object[] row : rows) {
                    Student student = new Student();
                    student.setName(row[0].toString());
                    student.setAge(Integer.parseInt(row[1].toString()));
            student.setProfession(row[2].toString());                
                    students.add(student);
                }
                sname = students.get(0).setName();
                sage = students.get(0).setAge(); 
            sprofession = students.get(0).setProfession();          
                trns.commit();
            } catch (HibernateException e) {
                e.printStackTrace();           
                trns.rollback();
            } finally {
                session.flush();
                session.close();
            }
            return students;
        }
<p:panelGrid id="pgrid" columns="2">
    <p:outputLabel value="Name:"/>
        <p:outputLabel value="#{student.sname}"/>
        <p:outputLabel value="Age:"/>
        <p:outputLabel value="#{student.sage}"/>
        <p:outputLabel value="Profession"/>
        <p:outputLabel value="#{student.sprofession}"/>
</p:panelGrid>
私有字符串sname;
私有整数;
私有整数存储;
公共列表getStuDetails(){
事务trns=null;
学生=新数组列表();
Session=getSession();
试一试{
trns=session.beginTransaction();
String sql=“从学生中选择姓名、年龄、职业,其中sid=“+sid;
SQLQuery query=session.createSQLQuery(sql).addScalar(“name”,new StringType()).addScalar(“age”,new IntegerType()).addScalar(“profession”,new StringType());
List rows=query.List();
对于(对象[]行:行){
学生=新生();
student.setName(行[0].toString());
setAge(Integer.parseInt(行[1].toString());
student.setProfession(第[2]行).toString();
学生。添加(学生);
}
sname=students.get(0.setName();
sage=students.get(0.setAge();
sprofession=students.get(0.setProfession();
trns.commit();
}捕获(休眠异常e){
e、 printStackTrace();
trns.rollback();
}最后{
session.flush();
session.close();
}
留学生;
}
更新的panelgrid:

private String sname;
private Integer sage;
private Integer sprofession;    
public List<Student> getStuDetails() {
            Transaction trns = null;
            students = new ArrayList<Student>();        
            Session session = getSession();
            try {
                trns = session.beginTransaction();
                String sql = "select name,age,profession from student where sid = " + sid;
                SQLQuery query = session.createSQLQuery(sql).addScalar("name", new StringType()).addScalar("age", new IntegerType()).addScalar("profession", new StringType());
                List<Object[]> rows = query.list();
                for (Object[] row : rows) {
                    Student student = new Student();
                    student.setName(row[0].toString());
                    student.setAge(Integer.parseInt(row[1].toString()));
            student.setProfession(row[2].toString());                
                    students.add(student);
                }
                sname = students.get(0).setName();
                sage = students.get(0).setAge(); 
            sprofession = students.get(0).setProfession();          
                trns.commit();
            } catch (HibernateException e) {
                e.printStackTrace();           
                trns.rollback();
            } finally {
                session.flush();
                session.close();
            }
            return students;
        }
<p:panelGrid id="pgrid" columns="2">
    <p:outputLabel value="Name:"/>
        <p:outputLabel value="#{student.sname}"/>
        <p:outputLabel value="Age:"/>
        <p:outputLabel value="#{student.sage}"/>
        <p:outputLabel value="Profession"/>
        <p:outputLabel value="#{student.sprofession}"/>
</p:panelGrid>


注意:但是如果您将使用panelgrid而不是datatable,那么将来您将无法导出您的panelgrid数据,因为dataexporter不支持panelgrid或panel。

我修改了您的代码并对其进行了修改。我创建了三个变量sname,sage和sprofession,还需要创建getter/setter,这里我使用的托管bean名称是“student”

更新的Java类:

private String sname;
private Integer sage;
private Integer sprofession;    
public List<Student> getStuDetails() {
            Transaction trns = null;
            students = new ArrayList<Student>();        
            Session session = getSession();
            try {
                trns = session.beginTransaction();
                String sql = "select name,age,profession from student where sid = " + sid;
                SQLQuery query = session.createSQLQuery(sql).addScalar("name", new StringType()).addScalar("age", new IntegerType()).addScalar("profession", new StringType());
                List<Object[]> rows = query.list();
                for (Object[] row : rows) {
                    Student student = new Student();
                    student.setName(row[0].toString());
                    student.setAge(Integer.parseInt(row[1].toString()));
            student.setProfession(row[2].toString());                
                    students.add(student);
                }
                sname = students.get(0).setName();
                sage = students.get(0).setAge(); 
            sprofession = students.get(0).setProfession();          
                trns.commit();
            } catch (HibernateException e) {
                e.printStackTrace();           
                trns.rollback();
            } finally {
                session.flush();
                session.close();
            }
            return students;
        }
<p:panelGrid id="pgrid" columns="2">
    <p:outputLabel value="Name:"/>
        <p:outputLabel value="#{student.sname}"/>
        <p:outputLabel value="Age:"/>
        <p:outputLabel value="#{student.sage}"/>
        <p:outputLabel value="Profession"/>
        <p:outputLabel value="#{student.sprofession}"/>
</p:panelGrid>
私有字符串sname;
私有整数;
私有整数存储;
公共列表getStuDetails(){
事务trns=null;
学生=新数组列表();
Session=getSession();
试一试{
trns=session.beginTransaction();
String sql=“从学生中选择姓名、年龄、职业,其中sid=“+sid;
SQLQuery query=session.createSQLQuery(sql).addScalar(“name”,new StringType()).addScalar(“age”,new IntegerType()).addScalar(“profession”,new StringType());
List rows=query.List();
对于(对象[]行:行){
学生=新生();
student.setName(行[0].toString());
setAge(Integer.parseInt(行[1].toString());
student.setProfession(第[2]行).toString();
学生。添加(学生);
}
sname=students.get(0.setName();
sage=students.get(0.setAge();
sprofession=students.get(0.setProfession();
trns.commit();
}捕获(休眠异常e){
e、 printStackTrace();
trns.rollback();
}最后{
session.flush();
session.close();
}
留学生;
}
更新的panelgrid:

private String sname;
private Integer sage;
private Integer sprofession;    
public List<Student> getStuDetails() {
            Transaction trns = null;
            students = new ArrayList<Student>();        
            Session session = getSession();
            try {
                trns = session.beginTransaction();
                String sql = "select name,age,profession from student where sid = " + sid;
                SQLQuery query = session.createSQLQuery(sql).addScalar("name", new StringType()).addScalar("age", new IntegerType()).addScalar("profession", new StringType());
                List<Object[]> rows = query.list();
                for (Object[] row : rows) {
                    Student student = new Student();
                    student.setName(row[0].toString());
                    student.setAge(Integer.parseInt(row[1].toString()));
            student.setProfession(row[2].toString());                
                    students.add(student);
                }
                sname = students.get(0).setName();
                sage = students.get(0).setAge(); 
            sprofession = students.get(0).setProfession();          
                trns.commit();
            } catch (HibernateException e) {
                e.printStackTrace();           
                trns.rollback();
            } finally {
                session.flush();
                session.close();
            }
            return students;
        }
<p:panelGrid id="pgrid" columns="2">
    <p:outputLabel value="Name:"/>
        <p:outputLabel value="#{student.sname}"/>
        <p:outputLabel value="Age:"/>
        <p:outputLabel value="#{student.sage}"/>
        <p:outputLabel value="Profession"/>
        <p:outputLabel value="#{student.sprofession}"/>
</p:panelGrid>


注意:但是如果使用panelgrid而不是datatable,然后,将来您将无法导出您的panelgrid数据,因为dataexporter不支持panelgrid或panel。

您可以借助变量在panelgrid中实现动态值…创建相关变量的getter setter并在该变量中存储取数值…之后,您可以使用managebean名称在jsf代码中调用该变量比如managebean.variables.谢谢Charlie,我试过了。请阅读一些jsf教程……考虑到公认的答案,这里有很多