I use the NetBeans tool generate a jsf form from entity(of coures,i am using JPA).I wanna get the form data from the jsf page,cose i don't know how to get the value of "#{readeredit.reader.tel}".my aim is to get the edit the data and post it from the form.and i get the default value from a get method.but i then find i can't get the value from the form. then the page xhtml code:
<h:body>
<f:view>
<h:form >
<h1><h:outputText value="读者信息编辑"/></h1>
<h:panelGrid columns="2" >
<h:outputLabel value="姓名:" for="name" />
<h:inputText id="name" value="#{readeredit.reader.name}" title="Name" />
<h:outputLabel value="性别:" for="sex" />
<h:inputText id="sex" value="#{readeredit.reader.sex}" title="Sex" />
<h:outputLabel value="学号:" for="barcode" />
<h:inputText id="barcode" value="#{readeredit.reader.barcode}" title="Barcode" />
<h:outputLabel value="密码:" for="pwd" />
<h:inputText id="pwd" value="#{readeredit.reader.pwd}" title="Pwd" />
<h:outputLabel value="职位:" for="vocation" />
<h:inputText id="vocation" value="#{readeredit.reader.vocation}" title="Vocation" />
<h:outputLabel value="生日:" for="birthday" />
<h:inputText id="birthday" value="#{readeredit.reader.birthday}" title="Birthday" >
<f:convertDateTime pattern="yyyy-MM-dd" />
</h:inputText>
<h:outputLabel value="电话:" for="tel" />
<h:inputText id="tel" value="#{readeredit.reader.tel}" title="Tel" />
<h:outputLabel value="Email:" for="email" />
<h:inputText id="email" value="#{readeredit.reader.email}" title="Email" />
<h:outputLabel value="备注:" for="remark" />
<h:inputTextarea rows="4" cols="30" id="remark" value="#{readeredit.reader.remark}" title="Remark" />
</h:panelGrid>
<h:commandButton value="保存" action="#{readeredit.edit()}" />
</h:form>
</f:view>
</h:body>
Generating jsf page needs a method returning entity.So i write this method, code is here:
public TbReader getReader() {
String id = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("tid");
if (id != null && !id.isEmpty()) {
this.typeid = id;
}
reader = uecon.findTbReader(Integer.parseInt(typeid.trim()));
return reader;
}
and the whole codes of my jsf managed bean is here:
@Named(value = "readeredit")
@SessionScoped
public class readeredit implements Serializable {
@Resource
UserTransaction utx;
@PersistenceUnit(unitName = "BMsPU")
private EntityManagerFactory emf;
TbReaderJpaController uecon;
private String typeid;
private TbReader reader;
public TbReader setReader(TbReader reader) {
this.reader = reader;
return reader;
}
public String getTypeid() {
return typeid;
}
public void setTypeid(String typeid) {
this.typeid = typeid;
}
@PostConstruct
public void init() {
uecon = new TbReaderJpaController(utx, emf);
this.setTypeid(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("tid"));
}
public TbReader getReader() {
String id = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("tid");
if (id != null && !id.isEmpty()) {
this.typeid = id;
}
reader = uecon.findTbReader(Integer.parseInt(typeid.trim()));
return reader;
}
public String edit(TbReader rd) throws Exception {
String id = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("tid");
if (id != null && !id.isEmpty()) {
this.typeid = id;
}
try {
TbReader editReader = new TbReader();
editReader= this.setReader(getReader());
editReader.setId(Integer.parseInt(typeid.trim()));
uecon.edit(editReader);
FacesMessage message = new FacesMessage("保存成功!");
FacesContext.getCurrentInstance().addMessage(null, message);
} catch (Exception e) {
FacesMessage message = new FacesMessage("保存失败!");
FacesContext.getCurrentInstance().addMessage(null, message);
}
return "reader";
}
public readeredit() {
}
}
when I finnish editing the form data,i can hardly find a method to get the form value.Now i am confuing.Plz tell me.