2009-08-28 5 views

답변

2

저는 이것을 알아 냈습니다.하지만 JSF뿐만 아니라 RichFaces의 AJAX 기능을 사용했습니다. 그냥 내 첫 번째 selectOneMenu에 태그를 추가하고 작동합니다 :

어쨌든 주셔서 감사합니다!

+0

다행 이군. RichFaces는 표준 JSF보다 일을 더 쉽게 해줍니다! –

1

값 변경 수신기를 첫 번째 selectOneMenu에 바인딩하는 경우 가능해야합니다.

ValueChangeEvent에서 새 값을 가져 와서 그에 따라 목록을 업데이트하십시오. JSF 페이지는 업데이트 된 목록을 표시해야합니다.

희망이 맞습니다!

+0

나는 그것을 시도 할 것이다. 감사! –

+0

ValueChangeEvent는 페이지를 제출할 때만 호출됩니다. \ –

+0

내 프로젝트에 richFaces도 있습니다. 여기에서 일부 AJAX 기능을 사용해야합니다. –

0

글쎄, 나는 a4j를 사용했다.

<code> 
//JSF 
<h:outputLabel value="First selectOneMenu: "/> 
<h:selectOneMenu value="#{yourBackingBean.selectedItem}"> 
<f:converter converterId="defaultConverter"/> 
<f:selectItem id="df01" itemLabel="Item01" itemValue="1" /> 
<f:selectItem id="df02" itemLabel="Item02" itemValue="2" /> 
<f:selectItem id="df03" itemLabel="Item03" itemValue="3" /> 
<a4j:support event="onchange" reRender="secondSelectOneMenu"/> //secondSelectOneMenu is the id of the dropdown you want to change 
</h:selectOneMenu> 


<h:outputLabel value="Second selectOneMenu: "/> 
<h:selectOneMenu value="#{yourBackingBean.attributeToStoreSelectedValue}" id="secondSelectOneMenu"> 
<f:converter converterId="defaultConverter"/> 
<f:selectItem id="df00" itemLabel="Select" itemValue="0" /> //Default value 
<f:selectItems value="#{yourBackingBean.returnByChoice}" /> 
</h:selectOneMenu> 


//Converter 

public class DefaultConverter implements Converter { 
public Object getAsObject(FacesContext ctx, UIComponent component, String value) { 
    return value; 
} 

public String getAsString(FacesContext ctx, UIComponent component, Object value) { 
    String label = ""; 
    if (value != null) { 
     label = value.toString(); 
    } 
    return label; 
} 
} 

//Backing Bean Sample 
public List<SelectItem> returnByChoice() { //it must return a list of SelectItems so it can be displayed on the jsf page 
    String id = (String) getSelectedItem(); //this is the value chosen from the first dropDownMenu wich selectedItem is the attribute onthe binding of the first dropDownMenu. 
    ArrayList<SelectItem> arrItems = new ArrayList<SelectItem>(); 
    if (id != null) { 

      List<YourClass> yourObjectList = yourDao.findAllItemsFromType(new Integer(id)); 

     Iterator<YourClass> iterator = yourObjectList.iterator(); 
     String tempName = ""; 
     String tempId = ""; 
     YourClass tempYourObject = null; 

     while (iterator.hasNext()) { 
      tempYourObject = iterator.next(); 
      tempId = String.valueOf(tempYourObject.getId()); 
      tempName = tempYourObject.getName(); 
      arrItems.add(new SelectItem(tempId, tempName)); 
     } 
    } 
    return arrProfiles; 
} 
</code> 
관련 문제