值不会更新bean属性

时间:2014-03-30 15:27:20

标签: java jsf-2 primefaces

我是JSF的新手,几天前我刚刚开始使用它,我正在尝试学习教程。但我不知道为什么这不起作用。 我在PrimeFaces 3.5中使用JSF 2.1。 问题是当我提交表单时,值不是更新属性。只更新了最后一个inputText。

我错过了什么?

查看:

<h:body>

<h:form id="profilForm">


    <p:growl id="msg" showDetail="true" life="3000" />
    <p:panel header="Profil" style="width: 460px;">

        <h:panelGrid id="loginPanel" columns="2">

            <h:outputLabel for="idPracownik" value="Id Pracownika" />

            <h:inputText id="idPracownik" value="#{pracownikControl.pracownik.idPracownik}" label="Id Pracownika"/>


            <p:outputLabel for="imie" value="Imię" />

            <p:inputText id="imie" value="#{pracownikControl.pracownik.imie}" label="Imię" />


            <h:outputLabel for="nazwisko" value="Nazwisko" />

            <p:inputText id="nazwisko" value="#{pracownikControl.pracownik.nazwisko}"  />


            <h:outputLabel for="kraj" value="Kraj" />

            <h:inputText id="kraj" value="#{pracownikControl.pracownik.kraj}" label="Kraj" />


            <h:outputLabel for="wojewodztwo" value="Województwo" />

            <h:inputText id="wojewodztwo" value="#{pracownikControl.pracownik.wojewodztwo}" label="Województwo" />



            <h:outputLabel for="miejscowosc" value="Miejscowość" />

            <h:inputText id="miejscowosc" value="#{pracownikControl.pracownik.miejscowosc}" label="Miejscowość" />


            <h:outputLabel for="adres" value="Adres" />

            <h:inputText id="adres" value="#{pracownikControl.pracownik.adres}" label="Adres" />



            <h:outputLabel for="kodPocztowy" value="Kod Pocztowy" />

            <h:inputText id="kodPocztowy" value="#{pracownikControl.pracownik.kodPocztowy}" label="Kod Pocztowy" />



            <h:outputLabel for="telefon" value="Telefon" />

            <h:inputText id="telefon" value="#{pracownikControl.pracownik.telefon}" label="Telefon" />


            <h:outputLabel for="email" value="E-mail" />

            <p:inputText id="email" value="#{pracownikControl.pracownik.email}" label="E-mail" />


            <h:outputLabel for="niepelnosprawnosc" value="Niepełnosprawność" />

            <p:selectBooleanCheckbox id="niepelnosprawnosc" value="#{pracownikControl.pracownik.niepelnosprawnosc}" label="Niepełnosprawność" />

        </h:panelGrid>

    </p:panel>

            <p:commandButton action="#{pracownikControl.updatePracownik()}" value="Zmień" />



</h:form>

豆:

  public class Pracownik implements java.io.Serializable{

private int idPracownik;
private int idUzyt;
private int idPliki;
private String imie;
private String nazwisko;
private String poziomWyksz;
private Date dataUrodzenia;
private String adres;
private String kodPocztowy;
private String miejscowosc;
private String kraj;
private String wojewodztwo;
private int telefon;
private String email;
private boolean niepelnosprawnosc;



public Pracownik()
{

}

public Pracownik(int idPracownik, int idUzyt, int idPliki, String imie, String nazwisko, String poziomWyksz, Date dataUrodzenia, String adres, String kodPocztowy, String miejscowosc, String kraj, String wojewodztwo, int telefon, String email, boolean niepelnosprawnosc)
{
    this.idPracownik = idPracownik;
    this.idUzyt = idUzyt;
    this.idPliki = idPliki;
    this.imie = imie;
    this.nazwisko = nazwisko;
    this.poziomWyksz = poziomWyksz;
    this.dataUrodzenia = dataUrodzenia;
    this.adres = adres;
    this.kodPocztowy = kodPocztowy;
    this.miejscowosc = miejscowosc;
    this.kraj = kraj;
    this.wojewodztwo = wojewodztwo;
    this.telefon = telefon;
    this.email = email;
    this.niepelnosprawnosc = niepelnosprawnosc;
}

public int getIdPracownik() {
    return idPracownik;
}

public void setIdPracownik(int idPracownik) {
    this.idPracownik = idPracownik;
}

public int getIdUzyt() {
    return idUzyt;
}

public void setIdUzyt(int idUzyt) {
    this.idUzyt = idUzyt;
}

public int getIdPliki() {
    return idPliki;
}

public void setIdPliki(int idPliki) {
    this.idPliki = idPliki;
}

public String getImie() {
    return imie;
}

public void setImie(String imie) {
    this.imie = imie;
}

public String getNazwisko() {
    return nazwisko;
}

public void setNazwisko(String nazwisko) {
    this.nazwisko = nazwisko;
}

public String getPoziomWyksz() {
    return poziomWyksz;
}

public void setPoziomWyksz(String poziomWyksz) {
    this.poziomWyksz = poziomWyksz;
}

public Date getDataUrodzenia() {
    return dataUrodzenia;
}

public void setDataUrodzenia(Date string) {
    this.dataUrodzenia = string;
}

public String getAdres() {
    return adres;
}

public void setAdres(String adres) {
    this.adres = adres;
}

public String getKodPocztowy() {
    return kodPocztowy;
}

public void setKodPocztowy(String kodPocztowy) {
    this.kodPocztowy = kodPocztowy;
}

public String getMiejscowosc() {
    return miejscowosc;
}

public void setMiejscowosc(String miejscowosc) {
    this.miejscowosc = miejscowosc;
}

public String getKraj() {
    return kraj;
}

public void setKraj(String kraj) {
    this.kraj = kraj;
}

public String getWojewodztwo() {
    return wojewodztwo;
}

public void setWojewodztwo(String wojewodztwo) {
    this.wojewodztwo = wojewodztwo;
}

public int getTelefon() {
    return telefon;
}

public void setTelefon(int telefon) {
    this.telefon = telefon;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public boolean isNiepelnosprawnosc() {
    return niepelnosprawnosc;
}

public void setNiepelnosprawnosc(boolean niepelnosprawnosc) {
    this.niepelnosprawnosc = niepelnosprawnosc;
}

}

控制:

    import java.sql.SQLException;
    import java.text.ParseException;

    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;

    import javax.faces.context.FacesContext;
    import javax.servlet.http.HttpSession;

    import dao.PracownikDAO;
    import entity.Pracownik;

    @ManagedBean(name = "pracownikControl")
    @ViewScoped

    public class PracownikControl implements java.io.Serializable {

private Pracownik pracownik;
private Pracownik prac;

public PracownikControl()
{

}


public Pracownik getPracownik() throws SQLException, ParseException {

    FacesContext context = FacesContext.getCurrentInstance();
      HttpSession session = (HttpSession)context.getExternalContext().getSession(false);
    System.out.println(pracownik.getTelefon());
     int id = (Integer)session.getAttribute("SesjaId");
    pracownik = PracownikDAO.wyswietl(id);

    return pracownik;
}

     public Pracownik updatePracownik() throws SQLException, ParseException {

FacesContext context = FacesContext.getCurrentInstance();
  HttpSession session = (HttpSession)context.getExternalContext().getSession(false);
  int id = (Integer)session.getAttribute("SesjaId");
      pracownik = PracownikDAO.zmienDane(pracownik, id);
    return pracownik;
}

public void setPracownik(Pracownik pracownik) {
    this.pracownik = pracownik;
}

}

3 个答案:

答案 0 :(得分:0)

您必须使用所有字段更新配置文件表单,以便在命令按钮中使用“更新”属性。所以,试试这个:

 <p:commandButton action="#{pracownikControl.updatePracownik()}" value="Zmień" 
  update=":profilForm" />

答案 1 :(得分:0)

使用属性partialSubmitajaxprocess尝试此代码:

<p:commandButton action="#{pracownikControl.updatePracownik()}" value="Zmień" ajax="true" partialSubmit="true" process="@form" />

您可以使用您发送的组件的ID来处理(您的表单,面板或其他),如下所示:

<p:commandButton action="#{pracownikControl.updatePracownik()}" value="Zmień" ajax="true" partialSubmit="true" process=":profilForm" />

属性过程可用于说明将为您的方法发送的范围。

答案 2 :(得分:0)

我确实遇到了同样的问题,我发现你忘记说要更新的内容了。只需设置update="@form"即可。因为p:commandButton位于表单内。

<p:commandButton action="#{pracownikControl.updatePracownik()}" value="Zmień"  update="@form" />