我正在使用JSF,JavaDB和Java创建一个应用程序作为学校项目。为了给您一个简短的解释,客户应该能够登录并选择菜单或菜单,然后点击更新。通过点击更新,客户被重定向到新页面,在该页面上向客户呈现包含所选菜单的表格。该表从ArrayList<获取信息。 >通过从数据库收集信息的方法来获取其对象。最后3列是由客户填写的,因为当时这些列是未知的。通过点击Endre(更改)按钮,最后3列应更改为InputText字段,客户可以在其中输入信息,然后按命令保存信息并将信息写入Order表。
问题:
当选择菜单/菜单并输入更新按钮时,新页面将加载并显示如下所示的信息。
所以它在这一点似乎工作正常,但是当你点击Endre(更改)按钮时,表格会消失,并且没有给出InputTextField。
使用布尔函数isEditable来确定单元格是显示为OutputField还是InputField。
我在下面列出了代码:
在.html中我(它是一个重复的代码,所以我发布了一部分):
<h:dataTable value="#{order.orderList}" var="enOrdre"
styleClass="standard" headerClass="hode"rowClasses="oddeRad, likeRad" footerClass="fot">
<h:column>
<f:facet name= " header " > #{mld.delivaddr}</f:facet>
<h:inputText value "#{enOrdre.levAdr}" rendered = "#{enOrdre.editable" styleClass= "venstrejustert"></h:inputText>
<h:outputText value= "#{enOrdre.levAdr}" rendered = "#{not enOrdre.editable</h:outputText>
</h:column>
使用Endre(更改)操作:
<h:column>
<f:facet name= " header "> #{mld.edit}</f:facet>
<h:commandLink value= "#{mld.edit} " action= "#{order.editAction(enOrdre)}" rendered="#{not enOrdre.editable}"
</h:column>
My Class OrderBean with isEditable()和setEditable(boolean editable):
public class OrderBean implements java.io.Serializable {
private String brukernavn;
private int orgNummer;
private String firmNavn;
private String kontaktP;
private String epost;
private String menues;
private String levAdr;
private String levDato;
private int antP;
boolean editable;
public OrderBean(String brukernavn, int orgNummer, String firmNavn, String kontaktP, String epost, String menues, String levAdr, String levDato, int antP) {
this.brukernavn = brukernavn;
this.orgNummer = orgNummer;
this.firmNavn = firmNavn;
this.kontaktP = kontaktP;
this.epost = epost;
this.menues = menues;
this.levAdr = levAdr;
this.levDato = levDato;
this.antP = antP;
}
public OrderBean(){
}
public synchronized String getBrukernavn() {
return brukernavn;
}
public synchronized void setBrukernavn(String nyBrukernavn) {
brukernavn = nyBrukernavn;
}
public synchronized int getOrgNummer() {
return orgNummer;
}
public synchronized void setOrgNummer(int nyOrgNummer) {
orgNummer = nyOrgNummer;
}
public synchronized String getFirmNavn() {
return firmNavn;
}
public synchronized void setFirmNavn(String nyFirmNavn) {
firmNavn = nyFirmNavn;
}
public synchronized String getKontaktP() {
return kontaktP;
}
public synchronized void setKontaktP(String nyKontaktP) {
kontaktP = nyKontaktP;
}
public synchronized String getEpost() {
return epost;
}
public synchronized void setEpost(String nyEpost) {
epost = nyEpost;
}
public synchronized String getMenues(){
return menues;
}
public synchronized void setMenues(String nyMenues){
menues = nyMenues;
}
public synchronized String getLevAdr() {
return levAdr;
}
public synchronized void setLevAdr(String nyLevAdr) {
levAdr = nyLevAdr;
}
public synchronized String getLevDato() {
return levDato;
}
public synchronized void setLevDato(String nyLevDato) {
levDato = nyLevDato;
}
public synchronized int getAntP() {
return antP;
}
public synchronized void setAntP(int nyAntP) {
antP = nyAntP;
}
public boolean isEditable(){
return editable;
}
public void setEditable(boolean editable){
this.editable = editable;
}
}
我的OrderRegistreringsBehandler中的方法:
private ArrayList<OrderBean> tabelldata2 = new ArrayList<OrderBean>();
public String saveAction(){
for(OrderBean orderBean : tabelldata2){
orderBean.setEditable(false);
}
return null;
}
public String editAction(OrderBean order){
order.setEditable(true);
return null;
}
希望有人能提前透露一下,谢谢你!