• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

JSF - SelectManyListBox doesnt populate on valeChangeevent

 
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi Experts,

I am trying to fire an event on a selectBooleanCheckBox and also trying to pass the param from this check box to the backing bean. and there im trying to get the values from the map using this param.

I am not getting this right. Any help is Appreciated !!

Here is my code Snippets

JSP :

<tr:column width="16%">
<f:facet name="header">
<h:outputText value="Prompt Name" styleClass="tableHeader_txt"/>
</f:facet>
<h:selectBooleanCheckbox id ="chkbox2" valueChangeListener="#{preferenceBean.setNewListValues }">
<tr:forEach var="nameList" items="#{preferenceBean.newListNames}">
<f:param name="keyFromJSF" value="#{nameList} " />
<!--<f:setPropertyActionListener target="#{preferenceBean.key}" value="#{nameList}" />-->
</tr:forEach>
</h:selectBooleanCheckbox>

</tr:column>
<tr:column>
<f:facet name="header">
<tr:outputText value="Prompt Value" styleClass="tableHeader_txt" />
</f:facet>

<h:selectManyListbox value="#{preferenceBean.selectedPromptValues}">
<tr:forEach var="valueList" items="#{preferenceBean.newListValues}">
<f:selectItem itemLabel="#{valueList}" itemValue="#{valueList}" />
</tr:forEach>
</h:selectManyListbox>


Backing Bean :

public void setNewListValues(javax.faces.event.ValueChangeEvent event) {
checkBoxSelect = (Boolean) event.getNewValue();
if(isCheckBoxSelect()!= false)
{
FacesContext context = FacesContext.getCurrentInstance();
keyFromJSF = (String) context.getExternalContext().getRequestParameterMap().get("keyFromJSF");
setKeyFromJSF(keyFromJSF);
newListValues = new ArrayList<String>(StoreMap.get(keyFromJSF));
//newListValues.addAll(StoreMap.get(keyFromJSF));
System.out.println(" After Passing Param : " + newListValues);
}
}

faces-config.xml :

<!-- <managed-property>
<property-name>keyFromJSF</property-name>
<value>#{param.keyFromJSF}</value>
</managed-property> -->


I am trying to pass the parameter from jsp to the bean. Is this the right way to do it.
Thanks.
 
Ranch Hand
Posts: 90
Eclipse IDE Chrome Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi Zahoor

The valueChangeListener setNewListValues is not fired becuase you don't post the page to the server, you need to make a post with a commandButton or the most practical submit the form when the user select the checkbox whith the function submit(), so your listener will be fired.

I hope this help you with your problem
Regards
Cesar
 
Zahoor Haque
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thanks Cesar for your help. much appreciated!

but I would like to know that the parameter that iam passing from JSF <f:param> tag. and retieving the same within a bean using facesContex.getRequestParameterMap().get("paramName")

is the right method to do it.

please take a look on the code.

JSF:

<tr:column width="16%">
<f:facet name="header">
<h:outputText value="Prompt Name" styleClass="tableHeader_txt"/>
</f:facet>
<h:selectBooleanCheckbox id ="chkbox2" valueChangeListener="#{preferenceBean.setNewListValues}" onchange="this.form.submit()">
<tr:forEach var="pName" items="#{preferenceBean.newListNames}">
<f:selectItem itemLabel="#{pName}" itemValue="#{pName}" />
<f:param name="keyFromJSF" value="#{pName}" />
<!--<f:setPropertyActionListener target="#{preferenceBean.keyFromJSF}" value="#{pName}" />-->
</tr:forEach>
</h:selectBooleanCheckbox>

</tr:column>
<tr:column width="16%">
<f:facet name="header">
<tr:outputText value="Prompt Value" styleClass="tableHeader_txt" />
</f:facet>
<h:selectManyListbox value="#{preferenceBean.selectedPromptValues}">
<tr:forEach var="pValue" items="#{preferenceBean.newListValues}">
<f:selectItem itemLabel="#{pValue}" itemValue="#{pValue}" />
</tr:forEach>
</h:selectManyListbox>
</tr:column>

The parameter that iam passing from checkbox based on that iam trying to getvalues from the map. and display new values in the selectManyListBox for every checkBox selection.

Bean:

public void setNewListValues(javax.faces.event.ValueChangeEvent event) {

setCheckBoxSelect((Boolean) event.getNewValue());

if(isCheckBoxSelect()!= false)
{
FacesContext context = FacesContext.getCurrentInstance();
keyFromJSF = context.getExternalContext().getRequestParameterMap().get("keyFromJSF");
setKeyFromJSF(keyFromJSF);
newListValues = new ArrayList<String>(StoreMap.get(keyFromJSF));
System.out.println(" After Passing Param (SETTER): " + newListValues);
}
else{
newListValues = new ArrayList<String>();
}
}


Do i have to set the property in the faces-config.xml ?
like

<managed-bean>
<managed-bean-name>preferenceBean</managed-bean-name>
<managed-bean-class>PreferenceBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<!--<managed-property>
<property-name>keyFromJSF</property-name>
<value>#{param.keyFromJSF}</value>
</managed-property>-->

</managed-bean>

Thanks.
 
Cesar Loachamin
Ranch Hand
Posts: 90
Eclipse IDE Chrome Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi Zahoor
Yes you can use the f:param but I think this doesn't work, I suggest you to use the f:attribute like this:

And you can get this value in this way:

You don't need to set this value with the managed property.
I hope this help you
Regards
Cesar
 
Zahoor Haque
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Cesar Loachamin wrote:Hi Zahoor
Yes you can use the f:param but I think this doesn't work, I suggest you to use the f:attribute like this:

And you can get this value in this way:

You don't need to set this value with the managed property.
I hope this help you
Regards
Cesar[/quote


Thank you Cesar. It got resolved.

 
reply
    Bookmark Topic Watch Topic
  • New Topic