正确使用render =“”函数

时间:2013-04-20 11:47:13

标签: java jsf

我正在使用JSF,JavaDB和Java创建一个应用程序作为学校项目。为了给您一个简短的解释,客户应该能够登录并选择菜单或菜单,然后点击更新。通过点击更新,客户被重定向到新页面,在该页面上向客户呈现包含所选菜单的表格。该表从ArrayList<获取信息。 >通过从数据库收集信息的方法来获取其对象。最后3列是由客户填写的,因为当时这些列是未知的。通过点击Endre(更改)按钮,最后3列应更改为InputText字段,客户可以在其中输入信息,然后按命令保存信息并将信息写入Order表。

问题:

当选择菜单/菜单并输入更新按钮时,新页面将加载并显示如下所示的信息。

enter image description here

所以它在这一点似乎工作正常,但是当你点击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;
}

希望有人能提前透露一下,谢谢你!

0 个答案:

没有答案