我正在使用 JSF、JavaDB 和 Java 创建一个应用程序作为学校项目。为了给你一个简短的解释,客户应该能够登录并选择一个或多个菜单,然后点击更新。通过点击更新,客户将被重定向到一个新页面,在此页面上,客户将看到一个包含所选菜单的表格。该表从 ArrayList< > 获取信息,该信息通过从数据库收集信息的方法添加其对象。最后 3 列应由客户填写,因为当时这些是未知的。通过点击 Endre(更改)按钮,应将最后 3 列更改为 InputText 字段,客户可以在其中输入信息,然后点击 order 将其保存并将信息写入 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>
我的带有 isEditable() 和 setEditable(boolean editable) 的 OrderBean 类:
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;
}
希望有人能提前对此有所了解,谢谢!