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