I don't have any more ideas from what you've posted.   If it were me,
I'd step through the process with the debugger and see why at this
point.  Make sure the value bindings are set to what you think they
are, and if they are, see what's calling rawDate.

On 4/20/07, Leyzerzon, Simeon <[EMAIL PROTECTED]> wrote:
Hah! That works, thanks, but now I'm facing a new complication: 
#{rptPeriod.reportingDateMonthly} and #{rptPeriod.reportingDateMonthly} doesn't 
seem to be mapping to the right field in the underlying bean.  Let me explain...

'rtpPeriod' is a representation of ReportingPeriod bean, instances of which populate 
the collection behind <t:selectItems> component.  These ReportingPeriod beans 
have 3 properties for display, each formatted differently, and set by Spring-based 
DAOlike this:


public void setReportingDate(Date reportingDate) {
        //logger.debug("set reporting date to: " + reportingDate);

        this.reportingDate = reportingDate;
        this.setReportingDateDaily(new SimpleDateFormat("MMM dd 
yyyy").format(reportingDate));
        this.setReportingDateMonthly(new SimpleDateFormat("MMM 
yyyy").format(reportingDate));
        this.setRawDate(new 
SimpleDateFormat("MM/dd/yyyy").format(reportingDate));
    }

What I see on the page though, is a combo box with the content populated in the 
following manner:

                03/01/2007
                02/01/2007
                01/01/2007, etc.

That is instead of using #{rptPeriod.reportingDateMonthly} or 
#{rptPeriod.reportingDateDaily}, #{rtpPeriod.rawDate} seems to be used.

Here is my current code:

=====================================================================================================================================
public void setReportingPeriodSelectOneMenuControl(
        HtmlSelectOneMenu reportingPeriodSelectOneMenuControl) {


    if (reportingPeriods == null){
        logger.debug("reportingPeriods == null: " +
                (reportingPeriods==null) + "building reportingPeriods list...");
        reportingPeriods = this.getSearchService().getReportingPeriods();
    }


    //building <t:selectItems>
    if (reportingPeriodsSelectItemsControl == null){
        reportingPeriodsSelectItemsControl = (UISelectItems) FacesContext
                    .getCurrentInstance().getApplication().createComponent(
                            UISelectItems.COMPONENT_TYPE);

    }

    reportingPeriodsSelectItemsControl.setValue(reportingPeriods);
    reportingPeriodsSelectItemsControl.setVar("rptPeriod");
    if (DAILY.equals(this.getPeriod())) {
        reportingPeriodsSelectItemsControl.setValueBinding("itemLabel",
                    FacesContext.getCurrentInstance().getApplication()
                            .createValueBinding(
                                    "#{rptPeriod.reportingDateDaily}"));
    }else if (MONTHLY.equals(this.getPeriod())) {
        reportingPeriodsSelectItemsControl.setValueBinding("itemLabel",
                    FacesContext.getCurrentInstance().getApplication()
                            .createValueBinding(
                                    "#{rptPeriod.reportingDateMonthly}"));
    }

    reportingPeriodsSelectItemsControl.setValueBinding("itemValue",
            
FacesContext.getCurrentInstance().getApplication().createValueBinding("#{rptPeriod.rawDate}"));



    
reportingPeriodSelectOneMenuControl.getChildren().add(reportingPeriodsSelectItemsControl);


    this.reportingPeriodSelectOneMenuControl = 
reportingPeriodSelectOneMenuControl;
    logger.debug("setReportingPeriodSelectOneMenuControl()" + 
reportingPeriodSelectOneMenuControl);
}

}
=====================================================================================================================================

ReportingPeriod bean is also registered as a managed-property of the backing 
bean on the faces-config.xml if it makes any difference.

Thanks again!!!
Simeon


-----Original Message-----
From: Mike Kienenberger [mailto:[EMAIL PROTECTED]
Sent: Friday, April 20, 2007 10:26 AM
To: MyFaces Discussion
Subject: Re: Dynamic Value binding - please help!

You need to assign ValueBinding objects, not strings.

You'd typically do something like this [example borrowed and modified from 
another posting]:

    FacesContext context = FacesContext.getCurrentInstance();
   Application app = context.getApplication();

   reportingPeriodsSelectItemsControl.setValueBinding("itemLabel",
app.createValueBinding("#{rptPeriod.reportingDateMonthly}"));



On 4/20/07, Leyzerzon, Simeon <[EMAIL PROTECTED]> wrote:
>
>
>
> Hi,
>
> I need to create the following construct dynamically in the backing bean:
>
> ======================================================================
> ======================== <h:outputText value="Reporting Period"  />
>      <h:selectOneMenu
> value="#{searchHandler.reportingPeriod.rawDate}"
>
> binding="#{searchHandler.reportingPeriodSelectOneMenuControl}">
>
>          <t:selectItems value="#{searchHandler.reportingPeriods}"
> var="rptPeriod"
>                 itemLabel="#{rptPeriod.reportingDateMonthly}"
> itemValue="#{rptPeriod.rawDate}"
>
> binding="#{searchHandler.reportingPeriodsSelectItemsControl}"
>          />
>      </h:selectOneMenu>
>
> ======================================================================
> ========================
>
> So I'm doing the following in my setter:
>
> ======================================================================
> ======================== public void
> setReportingPeriodSelectOneMenuControl(
>         HtmlSelectOneMenu
> reportingPeriodSelectOneMenuControl) {
>
>
>     if (reportingPeriods == null){
>         logger.debug("reportingPeriods == null: " +
>                 (reportingPeriods==null) + "building reportingPeriods
> list...");
>         reportingPeriods =
> this.getSearchService().getReportingPeriods();
>     }
>
>
>     //building <t:selectItems>
>     if (reportingPeriodsSelectItemsControl == null){
>         reportingPeriodsSelectItemsControl =
> (UISelectItems) FacesContext
>
> .getCurrentInstance().getApplication().createComponent(
>                             UISelectItems.COMPONENT_TYPE);
>
>     }
>
>
> reportingPeriodsSelectItemsControl.setValue(reportingPeriods);
>     reportingPeriodsSelectItemsControl.setVar("rptPeriod");
>
>     String label = null;
>
>
>
>     if (DAILY.equals(this.getPeriod())) {
>         label = "#{rptPeriod.reportingDateDaily}";
>     }else if (MONTHLY.equals(this.getPeriod())) {
>         label = "#{rptPeriod.reportingDateMonthly}";
>     }
>
>
>     reportingPeriodsSelectItemsControl.setItemLabel(label);
>
> reportingPeriodsSelectItemsControl.setItemValue("#{rptPeriod.rawDate}"
> );
>
>
>
> reportingPeriodSelectOneMenuControl.getChildren().add(reportingPeriods
> SelectItemsControl);
>
>
>
>
>
>     this.reportingPeriodSelectOneMenuControl =
> reportingPeriodSelectOneMenuControl;
>     logger.debug("setReportingPeriodSelectOneMenuControl()"
> + reportingPeriodSelectOneMenuControl);
> }
>
> ======================================================================
> ==========================
>
> Unfortunately, what I am getting in the page is the combo populated
> with a bunch of strings: #{rptPeriod.reportingDateMonthly}
>
> What am I missing here to link this variable 'rtpPeriod' to the value
> binding expression.  Or should there be a different syntax?
>
> Thanks for you help.
> Simeon
>
> ======================================================================
> ======== Please access the attached hyperlink for an important
> electronic communications disclaimer:
>
> http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html
> ======================================================================
> ========
>
>
>
>

==============================================================================
Please access the attached hyperlink for an important electronic communications 
disclaimer:

http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html
==============================================================================


Reply via email to