我對JSF非常陌生,前幾天我剛開始使用它,並試圖學習教程。但我不知道爲什麼這不起作用。 我正在使用PrimeFaces 3.5的JSF 2.1。 問題是當我提交表單時,值不是更新的屬性。只有最後一個inputText被更新。值不會更新bean屬性
我錯過了什麼?
查看:
<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;
}
}
你是怎麼確定只有最後一個字段被更新的? –
我在我的數據庫中看到它,當拋出控制檯 – Felek
我看到的第一個問題是你使用'@ SessionScoped'和你在構造函數中放置的邏輯。你確實意識到邏輯將在該會話的整個生命週期中只執行一次? – kolossus