Skip to main content

Why this table In-Cell editor, doesnt work?



I am trying to figure out, how the primefaces in-cell editor works.





For some reason, it does not work. I just see it activating and also i can type, but the values do not change. What is missing?







<?xml version='1.0' encoding='UTF-8' ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"

xmlns:h="http://java.sun.com/jsf/html"

xmlns:p="http://primefaces.org/ui"

xmlns:f="http://java.sun.com/jsf/core">



<h:form>

<p:dataTable id="allSubjects" var="subject" value="#{subjectControllerUpdate.retrieve()}" paginator="true" rows="7" >

<p:column headerText="Name" sortBy="#{subject.name}" style="width:200px" >

<p:cellEditor>

<f:facet name="output">

<h:outputText value="#{subject.name}"/>

</f:facet>

<f:facet name="input">

<p:inputText value="#{subject.name}" style="width:100%"/>

</f:facet>

</p:cellEditor>

</p:column>



<p:column sortBy="#{subject.description}" headerText="Description">

<p:cellEditor>

<f:facet name="output">

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

</f:facet>

<f:facet name="input">

<p:inputText value="#{subject.description}" style="width:100%"/>

</f:facet>

</p:cellEditor>

</p:column>



<p:column sortBy="#{subject.credits}" headerText="Credits" style="width:50px">

<p:cellEditor>

<f:facet name="output">

<h:outputText value="#{subject.credits}"/>

</f:facet>

<f:facet name="input">

<p:inputText value="#{subject.credits}" style="width:100%"/>

</f:facet>

</p:cellEditor>

</p:column>



<p:column headerText="Options" style="width:50px">

<p:rowEditor />

</p:column>

</p:dataTable>

</h:form>



</html>







This is the managed bean







package controllers;



import crudfacades.SubjectFacade;

import entities.Subject;

import java.io.Serializable;

import java.util.List;

import javax.ejb.EJB;

import javax.enterprise.context.SessionScoped;

import javax.inject.Named;



@Named("subjectControllerUpdate")

@SessionScoped

public class SubjectControllerUpdate implements Serializable {



private List<Subject> subjects;

private Subject currentSubject;

@EJB

private SubjectFacade ejbFacade;



//INITIALIZATION

public SubjectControllerUpdate() {

currentSubject = new Subject();

}



//RETRIEVE

public List<Subject> retrieve() {

return getSubjectFacade().findAll();

}



//UPDATE



//HELP METHODS

//RETURN THE FACADE FOR DATA MANIPULATION(Best practice)

private SubjectFacade getSubjectFacade() {

return ejbFacade;

}



//GETTERS AND SETTERS

public Subject getCurrentSubject() {

return currentSubject;

}



public void setCurrentSubject(Subject currentSubject) {

this.currentSubject = currentSubject;

}



public List<Subject> getSubjects() {

return subjects;

}



public void setSubjects(List<Subject> subjects) {

this.subjects = subjects;

}

}




Comments

  1. but when i click comfirm, the value in the UI is not changed


    You've bound the value of the <p:dataTable> to retrieve() instead of getSubjects(). So every single getter call will get the values straight from the DB instead of the model.


    and i see no changes in the database


    You are not saving anything in the DB.

    Fix your controller as follows:

    @Named
    @SessionScoped
    public class SubjectControllerUpdate implements Serializable {

    private DataModel<Subject> subjects;

    @EJB
    private SubjectFacade ejbFacade;

    @PostConstruct
    public void init() {
    subjects = new ListDataModel<Subject>(ejbFacade.findAll());
    }

    public void save() {
    ejbFacade.save(subjects.getRowData());
    }

    public List<Subject> getSubjects() {
    return subjects;
    }

    }


    with

    <h:form>
    <p:dataTable value="#{subjectControllerUpdate.subjects}" ...>
            <p:ajax event="rowEdit" listener="#{subjectControllerUpdate.save}" />
    ...
    </p:dataTable>
    </h:form>


    Using DataModel<Subject> instead of List<Subject> is necessary in order to be able to get the current row.

    ReplyDelete

Post a Comment

Popular posts from this blog

Slow Android emulator

I have a 2.67 GHz Celeron processor, 1.21 GB of RAM on a x86 Windows XP Professional machine. My understanding is that the Android emulator should start fairly quickly on such a machine, but for me it does not. I have followed all instructions in setting up the IDE, SDKs, JDKs and such and have had some success in staring the emulator quickly but is very particulary. How can I, if possible, fix this problem?

CCNA 3 Final Exam => latest version

1 . Which security protocol or measure would provide the greatest protection for a wireless LAN? WPA2 cloaking SSIDs shared WEP key MAC address filtering   2 . Refer to the exhibit. All trunk links are operational and all VLANs are allowed on all trunk links. An ARP request is sent by computer 5. Which device or devices will receive this message? only computer 4 computer 3 and RTR-A computer 4 and RTR-A computer 1, computer 2, computer 4, and RTR-A computer 1, computer 2, computer 3, computer 4, and RTR-A all of the computers and the router   3 . Refer to the exhibit. Hosts A and B, connected to hub HB1, attempt to transmit a frame at the same time but a collision occurs. Which hosts will receive the collision jamming signal? only hosts A and B only hosts A, B, and C only hosts A, B, C, and D only hosts A, B, C, and E   4 . Refer to the exhibit. Router RA receives a packet with a source address of 192.168.1.65 and a destination address of 192.168.1.161...