2011-01-07 4 views
1

In meiner richCalendar.jsp Seite, ich zum ersten Mal klicken Sie auf die showCurrentMonth Taste und zeigt den aktuellen Monat mit reich: Kalender.
ich wähle einen anderen Monat
ich klicke SelectedMonth Taste. Ich zeige den ausgewählten Monatsnamen.Reinitialize den aktuellen Monat Namen, wenn i-Taste klicken

Mein Problem ist: Ich gehe auf eine andere Seite. dann besuche ich den richCalendar.jsp und klicke erneut showCurrentMonth button, diesmal der reich: kalender zeigen den bereits ausgewählten monat statt aktuellen monat.
Jedes Mal möchte ich den aktuellen Monat anzeigen, wenn ich auf showCurrentMonth klicke.

Ansonsten einfach, sobald ich showCurrentMonth Schaltfläche klicken, dann habe ich einen anderen Monat selecte, i showCurrentMonth Taste und klicken Sie auf, ich will aktuellen Monatsnamen zeigen.

richCalendar.jsp

<body> 
<h:form id="calendarForm" binding="#{CalenderBean.initForm}">    
    <rich:panel>          
     <a4j:outputPanel id="calendarOutputPanel">    
      <h:panelGrid>              
       <a4j:commandButton value="showCurrentMonth" 
            action="#{CalenderBean.showCurrentMonthAction}" 
            reRender="monthlyPanelGridId,monthlyCalendarId,calendarOutputPanel"/>               

       <h:panelGrid id="monthlyPanelGridId" rendered="#{CalenderBean.monthlyCalendarRendered}" > 
        <rich:calendar boundaryDatesMode="scroll" 
            id="monthlyCalendarId" 
            showWeekDaysBar="false" 
               oncurrentdateselected="event.rich.component.selectDate(event.rich.date)" 
            showFooter="false" 
            popup="false" 
            value="#{CalenderBean.selectedMonth}"/> 

       </h:panelGrid> 

       <h:panelGrid id = "SearchButtonGrid"> 
        <a4j:commandButton id="SelectedMonth" 
         value="SelectedMonth" 
         action="#{CalenderBean.selectedMonthButtonAction}" 
         reRender="calendarOutputPanel"/> 

        <h:outputText value="#{CalenderBean.selectedMonthName}" /> 

       </h:panelGrid> 
      </h:panelGrid>                
    </a4j:outputPanel> 
<rich:panel></h:form></body> 

CalenderBean.java

import java.util.Calendar; 
import java.util.Date;   
import javax.faces.component.html.HtmlForm; 

public class CalenderBean {

private HtmlForm initForm;  
private boolean monthlyCalendarRendered; 
private Date selectedMonth; 
private String selectedMonthName; 

public CalenderBean() 
{ 
} 

public String showCurrentMonthAction() 
{ 
    monthlyCalendarRendered = true; 

    Calendar calendar = Calendar.getInstance(); 
    int startingDate = calendar.getActualMinimum(Calendar.DAY_OF_MONTH); 
    calendar.set(Calendar.DATE, startingDate); 
    selectedMonth = calendar.getTime();  

    return ""; 
} 

public String selectedMonthButtonAction() 
{   
    selectedMonthName = selectedMonth.toString(); 
    return ""; 
} 

public HtmlForm getInitForm() 
{  
    selectedMonth = null; 
    monthlyCalendarRendered = false; 

    return initForm; 
} 


public void setInitForm(HtmlForm initForm){ 
    this.initForm = initForm; 
} 

public boolean isMonthlyCalendarRendered(){ 
    return monthlyCalendarRendered; 
} 

public void setMonthlyCalendarRendered(boolean monthlyCalendarRendered){ 
    this.monthlyCalendarRendered = monthlyCalendarRendered; 
} 

public Date getSelectedMonth(){ 
    return selectedMonth; 
} 

public void setSelectedMonth(Date selectedMonth){ 
    this.selectedMonth = selectedMonth; 
} 

public String getSelectedMonthName(){ 
    return selectedMonthName; 
} 

public void setSelectedMonthName(String selectedMonthName){ 
    this.selectedMonthName = selectedMonthName; 
} 
} 

Zum ersten Mal i visi Diese Seite zeigt perfekt den aktuellen Monat. Dann gehe ich zu jeder anderen Seite und dann kommen Sie, um diese Seite zu sehen, klicken Sie auf showCurrentMonth Schaltfläche nicht den aktuellen Monat anzeigen.

Hilf mir. Vielen Dank im Voraus.

Antwort

0

Versuchen Sie, popup = "false" aus Ihrem Kalender-Steuerelement zu entfernen. Es wird funktionieren wie du willst.

Ich kenne nicht den Grund für dieses seltsame Verhalten, aber ich denke, es gibt ein Rendering-Problem.

Verwandte Themen