0

我正在使用 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;
}

希望有人能提前对此有所了解,谢谢!

4

0 回答 0