This week's giveaway is in the Android forum.
We're giving away four copies of Android Security Essentials Live Lessons and have Godfrey Nolan on-line!
See this thread for details.
The moose likes JSF and the fly likes f:selectItems can't set value Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Java » JSF
Bookmark "f:selectItems can Watch "f:selectItems can New topic
Author

f:selectItems can't set value

ya ji
Ranch Hand

Joined: Jul 14, 2008
Posts: 40
Hi all,

I got an issue, jsf code is:
<h:selectOneMenu id="selOrg" value="#{Bean1.selOrg}" >
<f:selectItem itemLabel="Select..." itemValue=""/>
<f:selectItems value="#{Bean2.allOrgSelectItems}" />
<a4j:support event="onchange" reRender="Org_usergroup_list" limitToList="true"></a4j:support>
</h:selectOneMenu>

Bean1 code segment:
private String selOrg;

public String getSelOrg() {
return selOrg;
}

public void setSelOrg(String selOrg) {
this.selOrg = selOrg;
}

The page looks good, but when I change the selectItems, the setSelOrg method didn't run, so getSelOrg will return null, who can help me? thanks a lot.
Bhaskar GR
Greenhorn

Joined: Jun 13, 2008
Posts: 28
write below code in jsp page


<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="https://ajax4jsf.dev.java.net/ajax" prefix="a4j"%>

<%String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>
My JSF 'index.jsp' starting page
</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>

<body>
<f:view>
<h:panelGrid id="BatchesList" rendered="true">
<h:form>
<hutputText value="Select Batch" />
<h:selectOneMenu value="#{dbl.selectedCategory}">
<f:selectItems value="#{dbl.items}" />
</h:selectOneMenu>


</h:form>


</h:panelGrid>
</f:view>
</body>
</html>
write below code in bean class


import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.faces.model.SelectItem;

public class DynamicListBean {

private ArrayList dynList = new ArrayList();
private SelectItem[]items;
private List dList = new ArrayList();
private String selectedCategory;

public DynamicListBean()
{
items=populateSelectOneMenu();
}


public SelectItem[] getItems() {
return items;
}

public void setItems(SelectItem[] items) {
this.items = items;
}

public String getSelectedCategory() {
return selectedCategory;
}

public void setSelectedCategory(String selectedCategory) {
this.selectedCategory = selectedCategory;
}

public List getDList() {
return dList;
}

public void setDList(List list) {
dList = list;
}

public ArrayList getDynList() {
return dynList;
}

public void setDynList(ArrayList dynList) {
this.dynList = dynList;
}

public SelectItem[] populateSelectOneMenu() {
String a = "B";
List selectItems = new ArrayList();
for (int i = 1; i < 5; i++) {
dList.add(a + i);

}
Iterator it = dList.listIterator();
while (it.hasNext()) {
String label = (String) it.next();

selectItems.add(new SelectItem(label));
}
return (SelectItem[]) selectItems.toArray(new SelectItem[0]);
}

}
ya ji
Ranch Hand

Joined: Jul 14, 2008
Posts: 40
Bean2.allOrgSelectItems is:
public List getAllOrgSelectItems(){
try {
List selectItems= new ArrayList();
Port port = getPortService();
List<Organization> orgList = port.getOrganizations();
for(Organization org: orgList){
selectItems.add(new SelectItem(org.getId(), org.getName()));
}
return selectItems;
} catch (Exception ex) {
ex.printStackTrace();
return null;
}
}

It can generate dropdown list well.

My problem is why the setSelOrg() method doesn't run, when change selection?
ya ji
Ranch Hand

Joined: Jul 14, 2008
Posts: 40
Fixed by another solution.

In page, add valueChangeListener to h:selectOneMenu component, then add a method in backing bean, like this:
public void changeOrg(ValueChangeEvent event) {
selOrg = event.getNewValue().toString();
}
 
 
subject: f:selectItems can't set value
 
Similar Threads
Integration problems using h:selectOneMenu
ValueChangeListener question
Doubt in ajax4jsf
selectOneMenu and value in the backing Bean in JSF
Problem in JSF