I didn't check my code, I just typed it into the email, so there may
be compilation problems and such.
As for the null pointer, can you tell us which line is 271?
On 5/7/07, bansi <[EMAIL PROTECTED]> wrote:
Thank you so much Andrew. Based on your recommendation i tried something like
this which results in NullPointerException.
public List getManufacturerList()
{
Map reqMap =
FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
// Note : I am not able to get DefaultContext as you mentioned in the
posting . Its giving error hence i end using getCurrentInstance of
FacesContext
List<SelectItem> manufacturerList =
(List<SelectItem>)reqMap.get(manufacturerList_KEY);
List<Manufacturer> manufResultSet = new ArrayList<Manufacturer>();
if (manufacturerList == null)
{
// TODO: load it
manufResultSet = manufManager.getManufacturerList(); //get data from
Database
for (int i=0; i< manufResultSet.size(); i++) {
Manufacturer namsManufacturer = (Manufacturer)
manufResultSet.get(i);
Long manufId = namsManufacturer.getId();
String manufName = namsManufacturer.getName();
manufacturerList.add(new
SelectItem(manufId.toString(),manufName));
}
reqMap.put(manufacturerList_KEY, manufacturerList);
}
return manufacturerList;
}
I know i am doing something wrong or maybe i didn't understood your posting
correctly.
Caused by: java.lang.NullPointerException
at
com.boeing.nmt.nams.view.bean.ManufacturerBean.getManufacturerList(ManufacturerBean.java:271)
Any pointers/suggestions to help me fix my code will be highly appreciated
Regards
Bansi
Andrew Robinson-5 wrote:
>
> private final static String LARGE_STUFF_KEY = "largestuff";
> @SuppressWarnings("unchecked")
> public List<Stuff> getLargeStuff()
> {
> Map reqMap = FacesContext.getDefaultInstance()
> .getExternalContext().getRequestMap();
> List<Stuff> list = (List<Stuff>)reqMap.get(LARGE_STUFF_KEY);
> if (list == null)
> {
> // TODO: load it
> reqMap.put(LARGE_STUFF_KEY, list);
> }
> return list;
> }
>
> The request map will be thrown out at the end of the request. So the
> "large stuff" will only be loaded once per request.
>
> On 5/4/07, bansi <[EMAIL PROTECTED]> wrote:
>>
>> Thanks Andrew for quick response. As i am newbie to JSF i would
>> appreciate
>> code snippet on how to cache the data pre-request as you correctly
>> guessed
>> the data is constructed inside a get method .
>> Here is my method in backing bean
>>
>> public List getManufacturerList(){
>> logger.info(" *** In getManufacturerList Backing Bean*** ");
>> List<NamsManufacturer> models = new
>> ArrayList<NamsManufacturer>();
>> List<SelectItem> manufacturers = new ArrayList<SelectItem>();
>>
>> models = manufManager.getManufacturerList(); //// Calls
>> Hibernate/Spring
>> i.e. database call to retrieve List of Manufacturers
>>
>> // Iterating thru Loop to wrap into instances of SelectItem so
>> that it can
>> be rendered as dropdown
>>
>> for (int i=0; i< models.size(); i++) {
>> NamsManufacturer namsManufacturer = (NamsManufacturer)
>> models.get(i);
>> Long manufId = namsManufacturer.getId();
>> String manufName = namsManufacturer.getName();
>> manufacturers.add(new
>> SelectItem(manufId.toString(),manufName));
>> }
>> return manufacturers;
>>
>> }
>>
>>
>> Also i would highly appreciate code snippet on how to use the requestMap
>> from the external context to cache data for
>> the request to avoid calling twice
>>
>> Any pointers/suggestions where i can obtain more info will be highly
>> appreciated
>>
>> Regards
>> Bansi
>>
>>
>> Andrew Robinson-5 wrote:
>> >
>> > UIComponents are free to call their value bindings as many times as
>> > they want, so you should make sure you cache that data pre-request if
>> > you are constructing data in a get method (like select items, maps,
>> > etc).
>> >
>> > In your case, it is being called twice because of the two phases it is
>> > needed. (1) During validation to ensure the value the user submit is a
>> > valid value (contained in a value of one of the select items) and (2)
>> > when re-rendering during an encodeXxx method.
>> >
>> > You can use the requestMap from the external context to cache data for
>> > the request that will be left for the GC after the request is
>> > completed.
>> >
>> >
>> > On 5/4/07, bansi <[EMAIL PROTECTED]> wrote:
>> >>
>> >> Here is the situation
>> >>
>> >> I have the following dropdown defined with ajax4jsf event onchange
>> >>
>> >> Code:
>> >>
>> >> <h:panelGrid columns="3" styleClass="detail" columnClasses="label">
>> >> <h:outputText value="Manufacturer" />
>> >>
>> >> <h:selectOneMenu id="manufList"
>> >> value="#{manufacturerBean.selectedManufacturer}" >
>> >> <f:selectItem itemLabel="New"
>> itemValue="New"
>> >> />
>> >>
>> >> <f:selectItems
>> value="#{manufacturerBean.manufacturerList}"
>> >> />
>> >> <a4j:support
>> >> action="#{manufacturerBean.loadManufacturerDetails}" event="onchange"
>> >> reRender="manufName,manufDescription,manufSource,btnSave,btnDelete" />
>> >> </h:selectOneMenu>
>> >> </h:panelGrid>
>> >>
>> >> The perfomance issue is
>> >>
>> >> Whenever i pick a different value from the dropdown, i expect only
>> >> ajax4jsf
>> >> action method is called i.e.
>> >>
>> >> <a4j:support action="#{manufacturerBean.loadManufacturerDetails}"
>> >> event="onchange"
>> >> reRender="manufName,manufDescription,manufSource,btnSave,btnDelete" />
>> >>
>> >> BUT why is the method defined in f:selectItems is getting called
>> >> twice as seen in log file
>> >> <f:selectItems value="#{manufacturerBean.manufacturerList}" />
>> >>
>> >> Logs:
>> >> 2007-05-04 14:16:31,694 INFO
>> >> [com.boeing.nmt.nams.view.bean.ManufacturerBean] - < *** In
>> >> getManufacturerList Backing Bean*** >
>> >> Any pointers/suggestions will be highly appreciated
>> >>
>> >> Regards
>> >> Bansi
>> >> --
>> >> View this message in context:
>> >>
>>
http://www.nabble.com/Perfomance-Issues-with-JSF-dropdown-tf3694314.html#a10330594
>> >> Sent from the MyFaces - Users mailing list archive at Nabble.com.
>> >>
>> >>
>> >
>> >
>>
>> --
>> View this message in context:
>>
http://www.nabble.com/Perfomance-Issues-with-JSF-dropdown-tf3694314.html#a10332531
>> Sent from the MyFaces - Users mailing list archive at Nabble.com.
>>
>>
>
>
--
View this message in context:
http://www.nabble.com/Perfomance-Issues-with-JSF-dropdown-tf3694314.html#a10367087
Sent from the MyFaces - Users mailing list archive at Nabble.com.