Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Mike Lewis on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

af:selectOneChoice - setting default selected value other than first

Status
Not open for further replies.

DairylandDan

Programmer
Apr 3, 2008
17
US
Hmmm, I'm stuck and would appreciate any help available (bet you've never read that on here before - LOL).

I'm building a dynamically populated af:selectonechoice and it works almost exactly as I'd like it. I'm grabbing distinct years from our database for those records which are active via a query in a sessionfacadebean - this query simply orders them in decending order (for example: 2011, 2010, 2009, 2008). But, my problem is that I can only get the page to load with the selectonechoice defaulted to the first year in the list.

Here's the code as it sits now . . .
jspx page:

Code:
<!-- Dynamic selectOneChoice of only available years from vHolidayDisplayFlag -->                           
<af:selectOneChoice value="0" autoSubmit="true" required="false"
                    id="selectOneChoiceYears" label="Year"
                    binding="#{backing_reports_calholiday.selectOneChoiceYears}"
                    valueChangeListener="#{backing_reports_calholiday.valueChangeListenerYear}">
 <f:selectItems id="selectItemsYears" binding="#{backing_reports_calholiday.selectItemsYears}" value="#{backing_reports_calholiday.availableYears}"/>
</af:selectOneChoice>
<!-- End of Dynamic selectOneChoice of only available years from vHolidayDisplayFlag -->

and here's the code from the backing bean:

Code:
 // get Available Years
 // This is designed to populate the selectOneChoice list with ONLY those years which are available in V_Holiday_Display_Flag
 public List<SelectItem> getAvailableYears() {
  Calendar cal = new GregorianCalendar();
  Integer currentyear = cal.get(Calendar.YEAR);
  int counter = 0;
  int holder = 0;

  OperationBinding operationBinding = getBindings().getOperationBinding("queryVHolidayScheduleByYearsAvailable");
  List<Long> years =  (List<Long>)operationBinding.execute();          
  Vector<SelectItem> listYears = new Vector<SelectItem>();

  for(Long year : years) {
   listYears.add(new SelectItem(Integer.toString(counter), year.toString()));
   if(year.equals(currentyear)){
    selectOneChoiceYears.setSubmittedValue(Integer.toString(counter)); // trying this?
    selectOneChoiceYears.setValue(Integer.toString(counter)); // trying this?
   }
   counter++;
  }

  return listYears;
 }

I've tried any and all manner of voodoo and code permutations, but, obviously, I'm missing the obvious somewhere. The selectoncechoice ALWAYS defaults to whatever the first year in the resultset is - and, of course, we want the years in order. But, we'd like the page to load with the current year selected by default.

So, the list may be:
2010
2009
2008

We'd like 2009 to be the default selected, not 2010 - which is what's being selected now (since it's first in the list).

* I've tried setting a value of "holder" in the backing bean when I'm working with the current year, and then reference that in the jspx page with the "value" element of the af:selectOneChoice - like this --> value="#{backing_reports_calholiday.holder}" . . . but, that didn't work.
* I can, of course, hard code the "value" element of the af:selectOneChoice when I "know" what the placement of the current year is in my result set . . . but, obviously, that's not the solution.

Hmmm (Image of me scratching my chin thoughtfully)

Any and all help would be greatly appreciated.



dLd
 
Sorry, I wasn't sure where it belonged. This one can be deleted then.

d
 
Neither I'm sure actually :)

But if you post in several forums, post a reference or a link to the other threads so people don't give the same answer twice

Cheers,
Dian
 
'Diancecht',

How do I "post a reference or a link to the other thread"?


dld
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top