2010-07-28 9 views
-1

J'ai 7 déroulant dans mon jsp (en utilisant JSF tag-Select One Menu), 2 déroulants dépendent des autres 2 déroulants. La portée de mon bean géré est session. J'ai une seule page et mon résultat est un graphique/tableau en fonction de la sélection du menu déroulant. Mais ma sélection est mise en cache et, parfois, lors de l'actualisation du code, mon bean et ma page jsp ne sont pas mis à jour. Ai-je besoin de mettre fin explicitement à la session sur le haricot? S'il vous plaît me suggérer une solution.Comment surmonter le problème de mise en cache de jsf?

page Ma JSP est la suivante:

<% @ taglib uri = "http://www.ibm.com/jsf/html_extended" prefix = "hx" %> < % @ taglib uri = "http://java.sun.com/jsf/core" préfixe = "f"%> <% @ taglib uri = "http://java.sun.com/jsf/html" préfixe = "h" %> <% @ taglib uri = "http://www.ibm.com/jsf/BrowserFramework" prefix = "ODC" %>

SLA DASHBOARD

<div id="mDiv" class="pStyle">  
<h:form styleClass="form" id="LoginForm" ><br> 
    <br> 
<div id="Header" class="hStyle"> 
     <h:outputText value= "WELCOME TO SLA DASHBOARD" /> 
</div> 
<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 
<div id="fDiv" > 
    <fieldset class="fStyle"> 
     <legend style="text-align: left;padding: 6px; font-weight:bold; font-size: 14">PLEASE MAKE YOUR SELECTION</legend><br> 
     &nbsp;&nbsp; 
     <h:outputText value="BU"/>&nbsp; 
     <h:selectOneMenu id="slaBU" value="#{LoginForm.slaPeriod}" 
      onchange="this.form.submit();" valueChangeListener="#{LoginForm.processBUChange}"> 
      <f:selectItems value="#{LoginForm.buList}" /> 
     </h:selectOneMenu>&nbsp;&nbsp; 
     <h:outputText>Application</h:outputText>&nbsp; 
     <h:selectOneMenu id="slaApplication" style="width:160px" value="#{LoginForm.slaApp}" required="true"> 
      <f:selectItems value="#{LoginForm.appList}" /> 
     </h:selectOneMenu>&nbsp;&nbsp; 
     <h:outputText>Period</h:outputText> 
     <h:selectOneMenu id="slaPeriod" value="#{LoginForm.slaPeriod}" onchange="this.form.submit()" 
      valueChangeListener="#{LoginForm.processPeriodChange}" > 
      <f:selectItems value="#{LoginForm.periodList}" /> 
     </h:selectOneMenu> 
     &nbsp; 
     <h:selectOneMenu id="slaPeriod1" style="width:100px" 
      value="#{LoginForm.slaPeriod1}" required="true"> 
      <f:selectItems value="#{LoginForm.periodList1}" /> 
     </h:selectOneMenu>&nbsp; 

     <h:selectOneMenu id="slaPeriod2" value="#{LoginForm.slaPeriod2}" required="true"> 
      <f:selectItems value="#{LoginForm.periodList2}" /> 
     </h:selectOneMenu>&nbsp;&nbsp; 
     <h:outputText value="SLA Group" /> 
     <h:selectOneMenu id="slaGroup" value="#{LoginForm.slaGroup}" required="true"> 
      <f:selectItems value="#{LoginForm.groupList}" /> 
     </h:selectOneMenu>&nbsp;&nbsp; 

     <h:outputText>View</h:outputText>&nbsp; 
     <h:selectOneMenu id="slaView" value="#{LoginForm.slaView}" required="true"> 
      <f:selectItems value="#{LoginForm.viewList}" /> 
     </h:selectOneMenu> &nbsp;&nbsp;&nbsp; 
     <h:commandButton id="submitButton" value="Submit" 
      type="submit" onclick = "return validate();" 
      style="width:60px;" action="#{LoginForm.processSubmit}" 
      /> 
     &nbsp; 
      <br> 
      <br> 
     </fieldset> 
    </div><br><br><br> 
    <div id="tDiv" > 
    <h:dataTable id="bTable" value="#{LoginForm.BT}" var="BillingTable" 
      style="font-weight: bold; text-align: center;" bgcolor="#D4D7FE" 
      border="4" cellpadding="1" width="60%" 
      rendered="#{LoginForm.btDisplay}"> 

      <f:facet name="header"> 
       <h:outputText value="Billing Report" style="font-weight: bold"/> 
      </f:facet> 

      <h:column> 
       <f:facet name="header"> 
        <h:outputText value="Buisness Unit" /> 
       </f:facet> 
       <h:outputText value="#{BillingTable.buName}" /> 
      </h:column> 

      <h:column> 
       <f:facet name="header"> 
        <h:outputText value="Completion Date" /> 
       </f:facet> 
       <h:outputText value="#{BillingTable.completionDate}" /> 
      </h:column> 

      <h:column> 
       <f:facet name="header"> 
        <h:outputText value="Target Date" /> 
       </f:facet> 
       <h:outputText value="#{BillingTable.targetDate}"></h:outputText> 
      </h:column> 
      <h:column> 
       <f:facet name="header"> 
        <h:outputText value="Billing Cycle" /> 
       </f:facet> 
       <h:outputText value="#{BillingTable.billingCyle}"></h:outputText> 
      </h:column> 
      <h:column> 
       <f:facet name="header"> 
        <h:outputText value="Status" /> 
       </f:facet> 
       <h:outputText value="#{BillingTable.status}"></h:outputText> 
      </h:column> 
     </h:dataTable> 
     <br> 
     <h:dataTable id="uTable" value="#{LoginForm.UT}" var="UptimeTable" 
      style="text-align: center" bgcolor="#D4D7FE" 
      border="4" cellpadding="1" width="60%" rendered="#{LoginForm.utDisplay}"> 

      <f:facet name="header"> 
       <h:outputText value="Uptime Report" style="font-style: normal; font-weight: bold"/> 
      </f:facet> 

      <h:column> 
       <f:facet name="header"> 
        <h:outputText value="Application Name" style="width:60px" /> 
       </f:facet> 
       <h:outputText value="#{UptimeTable.applicationName}" /> 
      </h:column> 
      <h:column> 
       <f:facet name="header"> 
        <h:outputText value="Application Class" /> 
       </f:facet> 
       <h:outputText value="#{UptimeTable.applicationClass}" /> 
      </h:column> 

      <h:column> 
       <f:facet name="header"> 
        <h:outputText value="Availability-Actual" /> 
       </f:facet> 
       <h:outputText value="#{UptimeTable.actual}" /> 
      </h:column> 

      <h:column> 
       <f:facet name="header"> 
        <h:outputText value="Availability-Target" /> 
       </f:facet> 
       <h:outputText value="#{UptimeTable.target}"></h:outputText> 
      </h:column> 
     </h:dataTable> 
     <br> 
     <h:dataTable id="tTable" value="#{LoginForm.TT}" var="TATTable" 
      style="font-weight: bold; text-align: center" bgcolor="#D4D7FE" 
      border="4" cellpadding="1" width="60%" 
      rendered="#{LoginForm.ttDisplay}"> 

      <f:facet name="header"> 
       <h:outputText value="Turn Around Time Report" /> 
      </f:facet> 

      <h:column> 
       <f:facet name="header"> 
        <h:outputText value="Application Name" /> 
       </f:facet> 
       <h:outputText value="#{TATTable.applicationName}" /> 
      </h:column> 

      <h:column> 
       <f:facet name="header"> 
        <h:outputText value="Application Class" /> 
       </f:facet> 
       <h:outputText value="#{TATTable.applicationClass}" /> 
      </h:column> 

      <h:column> 
       <f:facet name="header"> 
        <h:outputText value="TAT Average" /> 
       </f:facet> 
       <h:outputText value="#{TATTable.tatAverage}" /> 
      </h:column> 

      <h:column> 
       <f:facet name="header"> 
        <h:outputText value="TAT Target" /> 
       </f:facet> 
       <h:outputText value="#{TATTable.tatTarget}"></h:outputText> 
      </h:column> 
      <h:column> 
       <f:facet name="header"> 
        <h:outputText value="Request Count" /> 
       </f:facet> 
       <h:outputText value="#{TATTable.reqCount}"></h:outputText> 
      </h:column> 
      <h:column> 
       <f:facet name="header"> 
        <h:outputText value="Request Type" /> 
       </f:facet> 
       <h:outputText value="#{TATTable.reqType}"></h:outputText> 
      </h:column> 
     </h:dataTable> 
     </div> 
     <br> 
     <h:graphicImage styleClass="graphicImage" id="reportImage" alt="Sorry records not found !!" 
      value="#{LoginForm.imageLocation}" width="700" height="250" rendered="#{LoginForm.viewImage}"> 
      </h:graphicImage><br> 
     <h3><h:outputText value="Sorry records not found !!" rendered="#{LoginForm.notFoundMsg}"/></h3> 
    </h:form> 
    </div> 
</hx:scriptCollector></body> 

Voici mon LoginForm.java - BackBean

package sla.dashboa rd.form;

import sla.dashboard.Search.SearchManager; Importer sla.dashboard.drop_down_components. ; importez sla.dashboard.datatables.; import java.util. ; import javax.faces.context.FacesContext; import javax.faces.event.; import javax.faces.model. *;

LoginForm public class implémente ValueChangeListener, ActionListener {

private String imageResult=null,imageLocation=null; 
private int slaPeriod,slaApp,slaBU,slaPeriod1,slaPeriod2,slaGroup,periodType,slaView; 


Boolean btDisplay,utDisplay,ttDisplay,viewImage,notFoundMsg; 

//Table Lists 
List <BillingTable> BT; 
List <UptimeTable> UT; 
List <TATTable> TT; 

DropDownComponents ddC; 

List<SelectItem> buList; 
List<SelectItem> periodList; 
List<SelectItem> periodList1; 
List<SelectItem> periodList2; 
List<SelectItem> groupList; 
List<SelectItem> appList; 

List<SelectItem> viewList; 

ArrayList<String> result= new ArrayList<String>(); 


public LoginForm() 
{ 

    ddC=new DropDownComponents(); 
    buList=ddC.getBuList(); 
    this.reset(); 

    BT=new ArrayList<BillingTable>(); 
    UT=new ArrayList<UptimeTable>(); 
    TT=new ArrayList<TATTable>(); 

    System.out.println("\n Back Bean Object Instantiated"); 
} 
public int getSlaBU() { 
    return slaBU; 
} 

public void setSlaBU(int slaBU) { 
    this.slaBU = slaBU; 
} 

public int getSlaPeriod1() { 
    return slaPeriod1; 
} 

public void setSlaPeriod1(int slaPeriod1) { 
    this.slaPeriod1 = slaPeriod1; 
} 

public int getSlaPeriod2() { 
    return slaPeriod2; 
} 

public void setSlaPeriod2(int slaPeriod2) { 
    this.slaPeriod2 = slaPeriod2; 
} 

public int getSlaGroup() { 
    return slaGroup; 
} 

public void setSlaGroup(int slaGroup) { 
    this.slaGroup = slaGroup; 
} 

public int getPeriodType() { 
    return periodType; 
} 

public void setPeriodType(int periodType) { 
    this.periodType = periodType; 
} 

public int getSlaView() { 
    return slaView; 
} 

public void setSlaView(int slaView) { 
    this.slaView = slaView; 
} 

public ArrayList<String> getResult() { 
    return result; 
} 

public void setResult(ArrayList<String> result) { 
    this.result = result; 
} 

public int getSlaApp() { 
    return slaApp; 
} 

public Boolean getBtDisplay() { 
    return btDisplay; 
} 

public void setBtDisplay(Boolean btDisplay) { 
    this.btDisplay = btDisplay; 
} 

public Boolean getUtDisplay() { 
    return utDisplay; 
} 

public void setUtDisplay(Boolean utDisplay) { 
    this.utDisplay = utDisplay; 
} 

public Boolean getTtDisplay() { 
    return ttDisplay; 
} 

public void setTtDisplay(Boolean ttDisplay) { 
    this.ttDisplay = ttDisplay; 
} 

public void setSlaApp(int slaApp) { 
    this.slaApp = slaApp; 
} 

public int getSlaPeriod() { 
    return slaPeriod; 
} 

public void setSlaPeriod(int slaPeriod) { 
    this.slaPeriod = slaPeriod; 
} 




public List<SelectItem> getViewList() { 
    return viewList; 
} 

public void setViewList(List<SelectItem> viewList) { 
    this.viewList = viewList; 
} 

public List<SelectItem> getPeriodList() { 
    return periodList; 
} 
public void setPeriodList(List<SelectItem> periodList) { 

    this.periodList = periodList; 
} 

public List<SelectItem> getBuList() 
{ 
    return buList; 
} 



public void setBuList(List<SelectItem> buList) { 
    this.buList = buList; 
} 


public List<SelectItem> getPeriodList1() { 
    return periodList1; 
} 

public void setPeriodList1(List<SelectItem> periodList1) { 
    this.periodList1 = periodList1; 
} 

public List<SelectItem> getPeriodList2() { 
    return periodList2; 
} 

public void setPeriodList2(List<SelectItem> periodList2) { 
    this.periodList2 = periodList2; 
} 

public List<SelectItem> getGroupList() { 
    return groupList; 
} 

public void setGroupList(List<SelectItem> groupList) { 
    this.groupList = groupList; 
} 

public List<SelectItem> getAppList() { 
    return appList; 
} 

public void setAppList(List<SelectItem> appList) { 
    this.appList = appList; 
} 




//ValueChangeListener 
public void processValueChange(ValueChangeEvent arg0) throws AbortProcessingException 
{} 

public void processPeriodChange(ValueChangeEvent arg0) throws AbortProcessingException 
{ 
    this.setSlaPeriod(Integer.parseInt(arg0.getNewValue().toString())); 
    this.setPeriodList1(ddC.getPeriodList1(Integer.parseInt(arg0.getNewValue().toString()))); 

    System.out.println("Period Changed Value : "+this.getSlaPeriod()); 
    FacesContext.getCurrentInstance().renderResponse(); 
} 

public void processBUChange(ValueChangeEvent arg0) throws AbortProcessingException 
{ 
    this.setSlaBU(Integer.parseInt(arg0.getNewValue().toString())); 
    this.setAppList(ddC.getAppList(Integer.parseInt(arg0.getNewValue().toString()))); 
    System.out.println("\n BU Slected : " + this.getSlaBU()); 
    FacesContext.getCurrentInstance().renderResponse(); 
} 


public void processAction(ActionEvent arg0) throws AbortProcessingException 
{} 
public List<BillingTable> getBT() { 
    return BT; 
} 

public void setBT(List<BillingTable> bt) { 
    BT = bt; 
} 

public List<UptimeTable> getUT() { 
    return UT; 
} 

public void setUT(List<UptimeTable> ut) { 
    UT = ut; 
} 

public List<TATTable> getTT() { 
    return TT; 
} 

public void setTT(List<TATTable> tt) { 
    TT = tt; 
} 


public void setImageLocation(String imageLocation) { 
    this.imageLocation = imageLocation; 
} 

public String getImageLocation() { 
    return imageLocation; 
} 

public Boolean getViewImage() { 
    return viewImage; 
} 

public void setViewImage(Boolean viewImage) { 
    this.viewImage = viewImage; 
} 

public void setImageResult(String imageResult) { 
    this.imageResult = imageResult; 
} 

public String getImageResult() { 
    return imageResult; 
} 

public Boolean getNotFoundMsg() { 
    return notFoundMsg; 
} 

public void setNotFoundMsg(Boolean notFoundMsg) { 
    this.notFoundMsg = notFoundMsg; 
} 

public void reset() 
{ 
    slaPeriod=0; 
    slaApp=0; 
    slaBU=0; 
    slaPeriod1=0; 
    slaPeriod2=0; 
    slaGroup=0; 
    slaView=0; 
    periodList=ddC.getPeriodList(); 
    periodList1=ddC.getPeriodList1(slaPeriod); 
    periodList2=ddC.getPeriodList2(); 
    groupList=ddC.getSlaGroupList(); 
    appList=ddC.getAppList(slaApp); 
    viewList=ddC.getViewList(); 
    this.setViewImage(false); 
    this.setUtDisplay(false); 
    this.setTtDisplay(false); 
    this.setBtDisplay(false); 
    this.setNotFoundMsg(false); 

} 
String getLabel(int index,List<SelectItem> lst) 
{ 
    return(lst.get(index).getLabel()); 
} 
public String processSubmit() 
{ 

    System.out.println("Inside Process Submit "+this.getSlaBU()+ 
      this.getSlaApp()+this.getSlaPeriod()+this.getSlaPeriod1()+ 
      this.getSlaPeriod2()+this.getSlaGroup()+this.getSlaView()); 
    this.setViewImage(false); 
    this.setUtDisplay(false); 
    this.setTtDisplay(false); 
    this.setBtDisplay(false); 
    this.setNotFoundMsg(false); 

    /*slaPeriod=1; 
    slaApp=0; 
    slaBU=1; 
    slaPeriod1=1; 
    slaPeriod2=2; 
    slaGroup=2; 
    slaView=1;*/ 

    if(this.slaGroup==1 && slaView==1) 
    { 
     BT=new SearchManager().searchBillingTable 

      (slaBU,getLabel(slaPeriod,periodList), 
      slaPeriod1,getLabel(slaPeriod2, 
      periodList2),getLabel(slaGroup,groupList)); 
      if(BT.size()!=0) 
       this.setBtDisplay(true); 
      else 
       this.setNotFoundMsg(true); 
    } 
    else 
    { 
     if(this.slaGroup==2 && slaView==1) 
     { 
       UT=new SearchManager().searchUptimeTable 
       (slaBU,getLabel(slaPeriod,periodList), 
         slaPeriod1,getLabel(slaPeriod2, 
         periodList2),getLabel(slaGroup,groupList)); 
       if(UT.size()!=0) 
        this.setUtDisplay(true); 
       else 
        this.setNotFoundMsg(true); 
     } 
     else 
     { 
      if(this.slaGroup==3 && slaView==1) 
      { 
       TT=new SearchManager().searchTATTable(slaBU,getLabel(slaPeriod,periodList), 
         slaPeriod1,getLabel(slaPeriod2, 
           periodList2),getLabel(slaGroup,groupList)); 
       if(TT.size()!=0) 
        this.setTtDisplay(true); 
       else 
        this.setNotFoundMsg(true); 

      } 
      else 
      { 
       if(slaView==2) 
       { 
        imageResult=new SearchManager().searchImage(slaBU, 
          getLabel(slaPeriod,periodList), 
        slaPeriod1,getLabel(slaPeriod2,periodList2), 
        getLabel(slaGroup,groupList),slaView); 
        this.setImageLocation(imageResult); 
        this.setViewImage(true); 
       } 
       else 
       { 
        this.setNotFoundMsg(true); 
       } 
      } 
     } 
} 
    return("Success"); 
} 

}

Mes faces-config.xml

LoginForm sla.dashboard.form.LoginForm séance

Répondre

2

Utilisez @ViewScope au-dessus du nom du bean.

@ViewScope 
public class LoginForm{ 
.. 
} 

(je crois que vous ajoutez le champ d'application dans les faces-config. En JSF2 il n'y a pas besoin de lui.Mieux vaut utiliser une annotation au-dessus de la classe)

BTW, je vous recommande d'appeler votre classe de la manière JSF: LoginBean et pas LoginForm.

Puisqu'il représente un bean géré par JSF.

+0

Ok, je vais essayer et je vous informerai. Merci encore pour votre aide ... –

+0

Je vais changer le nom de LoginForm à LoginBean. Une fois que j'ajoute cette annotation, RAD me dit d'ajouter une interface. public @interface ViewScope { } Que contient cette interface? Je n'ai aucune idée ... –

+0

Vous n'avez pas besoin d'interface pour cela. Ajoutez-vous l'annotation javax.faces.bean.ViewScoped? Quels jar jsf avez-vous? – Dejell

Questions connexes