problem when posting data from a table using <p:columns

UI Components for JSF
Post Reply
aabuhasanpf
Posts: 1
Joined: 09 Apr 2011, 12:48

09 Apr 2011, 14:05

Dear All,,
please help me to solve this annoying problem
i have a data table that displays a list of students and their marks
each class has a set of students and each student has a dynamic set of mark fields

this works fine for displaying but when i save the marks i get the following error
WARNING: /ui/details.xhtml @153,211 value="#{fff[colIndex].value}": Target Unreachable, 'null' returned null
javax.el.PropertyNotFoundException: /ui/details.xhtml @153,211 value="#{fff[colIndex].value}": Target Unreachable, 'null' returned null

please any ideas to solve this?????

i use the follwing code

Code: Select all

<p:dataTable dynamic="true" style="width: 90%;font-size:10" var="st" rowIndexVar="rowIndex" value="#{teacherClasses.selectedClass.students}" id="dddddddd">
                    <f:facet name="header">
                        <p:toolbar>

                            <p:toolbarGroup align="center">
                                #{teacherClasses.selectedClass.crsName} Sec: #{teacherClasses.selectedClass.classNo} Instructor: #{teacherClasses.selectedClass.tchrName} Semester: #{teacherClasses.selectedClass.classYyt}
                            </p:toolbarGroup>
                        </p:toolbar>
                    </f:facet>

                    <p:column   headerText=" " style="width:10px">
                        <h:outputText style="font-size:10" value="#{rowIndex+1}" />
                    </p:column>
                    <p:column  sortBy="#{st.studId}" headerText="Student ID" style="width:100px">
                        <h:outputText style="font-size:10" value="#{st.studId}" />
                    </p:column>

                    <p:column   sortBy="#{st.lName}" headerText="Student Name" style="width:250px">
                        <h:outputText style="font-size:10" value="#{st.lName}" />
                    </p:column>

                    <p:column style=" text-align: center " headerText="Mark Fields">
                        <f:facet name="header">
                            <p:dataTable style="font-size: xx-small;border:none" value="${teacherClasses.selectedClass.fieldNamesx}" var="f">

                                <p:columns value="${teacherClasses.selectedClass.classFields}" var="column" columnIndexVar="colIndex">
                                    <h:outputText style="width:30px;font-size:10" value="${column.fieldName}"></h:outputText>
                                    <br></br>
                                    <h:outputText style="width:30px;font-size:10" value="[${column.percentage}]"></h:outputText>

                                </p:columns>
                            </p:dataTable>
                        </f:facet>

                        <p:dataTable style="border:none" id="mfTable" value="#{st.markFields}" var="fff" >
                            <p:columns  value="#{teacherClasses.selectedClass.fieldNames}" var="column" columnIndexVar="colIndex">

                                <p:inputText onfocus="this.select()"  onclick="setCurrent(this)" onmouseover="this.select()" value="#{fff[colIndex].value}" style="width: 40px; height: 20px; text-align: center">
                                    <f:validateDoubleRange minimum="0" maximum="100"></f:validateDoubleRange>
                                </p:inputText>

                            </p:columns>

                        </p:dataTable>

                    </p:column>




                </p:dataTable>

Code: Select all

package beans;

import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.SelectItem;
import model.UrsClass;

/**
 *
 * @author Administrator
 */
@ManagedBean
@SessionScoped
public class TeacherClasses implements java.io.Serializable {

    private List<model.UrsClass> classes;
    private model.UrsClass selectedClass;
    private List<SelectItem> classItems;
    private List<String> oneRow;

    public List<String> getOneRow() {
        return oneRow;
    }

    public void setOneRow(List<String> oneRow) {
        this.oneRow = oneRow;
    }

    /** Creates a new instance of TeacherClasses */
    public TeacherClasses() {
        try {
            classes = new ArrayList<model.UrsClass>();
            selectedClass = new model.UrsClass();
            oneRow = new java.util.ArrayList<String>();
            oneRow.add("1");
           
                classes.add(new model.UrsClass(db.get().getString("class_yyt"), db.get().getString("crs_no"), db.get().getString("crs_seq"), db.get().getString("class_no"), db.get().getString("class_type"), db.get().getString("tchr_no"), db.get().getString("tchr_l_name"), db.get().getString("crs_l_name")));
          
        } catch (Exception ex) {
            Logger.getLogger(TeacherClasses.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    public List<UrsClass> getClasses() {
        return classes;
    }

    public void setClasses(List<UrsClass> classes) {
        this.classes = classes;
    }

    public UrsClass getSelectedClass() {
        return selectedClass;
    }

    public void setSelectedClass(UrsClass selectedClass) {
        this.selectedClass = selectedClass;
    }

    public List<SelectItem> getClassItems() {


        if (classItems == null) {
            classItems = new ArrayList<SelectItem>();
            for (model.UrsClass s : classes) {
                classItems.add(new SelectItem(s, s.getCrsName() + " Sec " + s.getClassNo()));

            }
        }


        return classItems;
    }

    public void setClassItems(List<SelectItem> classItems) {
        this.classItems = classItems;
    }

    public String viewClass() {
        return "success";
    }
     public String viewClassNotes() {
        return "notes";
    }
}

Code: Select all

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model;

import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

/**
 *
 * @author Administrator
 */

public class Student {

    private String studId, lName, aName, specNo, specName, colgNo, colgName;
    private List<model.MarkField[]> markFields;
    
  

    public List<MarkField[]> getMarkFields() {
        System.out.println("Getting mark fields for " + this.studId);
        return markFields;
    }

    public void setMarkFields(List<MarkField[]> markFields) {
        this.markFields = markFields;
    }

    /* public List<model.MarkField> getMarkFields() {
    System.out.println("Studentnt id="+studId);
    for (model.MarkField f : markFields)
    {
    System.out.println(f.getFieldName());

    }
    return markFields;
    }

    public void setMarkFields(List<MarkField> fields) {
    this.markFields = fields;
    }*/
    

    public Student(String studId, String lName, String aName, String specNo, String specName, String colgNo, String colgName, model.UrsClass c) {
        System.out.print("Creating student " + studId);

        this.studId = studId;
        this.lName = lName;
        this.aName = aName;
        this.specNo = specNo;
        this.specName = specName;
        this.colgNo = colgNo;
        this.colgName = colgName;
        System.out.print("adding default fields for " + studId);
        markFields = new java.util.ArrayList<model.MarkField[]>();
       markFields.add(new model.MarkField(999, "test", 20, 1, 15));
        markFields.add(new model.MarkField(888, "test1", 50, 0, 33));
        
                mfArray[mfi]=new model.MarkField(db.get().getLong("field_no"), db.get().getString("field_name"), db.get().getDouble("percentage"), db.get().getInt("is_displayable"), db.get().getDouble("mark_value"));
                mfi=mfi+1;
//                markFields.add(new model.MarkField(db.get().getLong("field_no"), db.get().getString("field_name"), db.get().getDouble("percentage"), db.get().getInt("is_displayable"), db.get().getDouble("mark_value")));
                //  System.out.println(db.get().getString("field_name"));

            }
            markFields.add(mfArray);

            System.out.println("Saved student fields::::::::::::::::::");
            /*for (model.MarkField f : markFields) {
                System.out.println(f.getFieldName());
            }*/

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (db != null) {
                db.close();

            }
        }

    }

    public Student() {
       
    }

    public String getaName() {
        return aName;
    }

    public void setaName(String aName) {
        this.aName = aName;
    }

    public String getColgName() {
        return colgName;
    }

    public void setColgName(String colgName) {
        this.colgName = colgName;
    }

    public String getColgNo() {
        return colgNo;
    }

    public void setColgNo(String colgNo) {
        this.colgNo = colgNo;
    }

    public String getlName() {
        return lName;
    }

    public void setlName(String lName) {
        this.lName = lName;
    }

    public String getSpecName() {
        return specName;
    }

    public void setSpecName(String specName) {
        this.specName = specName;
    }

    public String getSpecNo() {
        return specNo;
    }

    public void setSpecNo(String specNo) {
        this.specNo = specNo;
    }

    public String getStudId() {
        return studId;
    }

    public void setStudId(String studId) {
        this.studId = studId;
    }

    public void saveMarks()
    {
        System.out.println("In save marks********************************************************");

            System.out.println("Student fields values for "+getlName());
            /*for(model.MarkField f:getMarkFields())
            {
             System.out.println(f.getFieldName()+"="+f.getValue());
            }*/


       FacesMessage msg = new FacesMessage("Saved Succesfully... ");
        FacesContext.getCurrentInstance().addMessage(null, msg);
    }
   
}

Code: Select all

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package model;

/**
 *
 * @author Administrator
 */
public class MarkField {
private long fieldNo;
private String fieldName;
private double percentage;
private int displayable;
private double value;

    public double getValue() {
        return value;
    }

    public void setValue(double value) {
        this.value = value;
    }


    public MarkField(long fieldNo, String fieldName, double percentage, int displayable,double value) {
        this.fieldNo = fieldNo;
        this.fieldName = fieldName;
        this.percentage = percentage;
        this.displayable = displayable;
        this.value=value;
    }

    public MarkField() {
    }

    public int getDisplayable() {
        return displayable;
    }

    public void setDisplayable(int displayable) {
        this.displayable = displayable;
    }

    public String getFieldName() {
        return fieldName;
    }

    public void setFieldName(String fieldName) {
        this.fieldName = fieldName;
    }

    public long getFieldNo() {
        return fieldNo;
    }

    public void setFieldNo(long fieldNo) {
        this.fieldNo = fieldNo;
    }

    public double getPercentage() {
        return percentage;
    }

    public void setPercentage(double percentage) {
        this.percentage = percentage;
    }


}


Post Reply

Return to “PrimeFaces”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 61 guests