2013-06-05 37 views
0

如何檢索primefaces自動完成J2EE primesfaces自動填充值檢索

<p:autoComplete value="#{completeBean.selected1}" 
id="basicPojo1" completeMethod="#{completeBean.completePlayer}" 
var="p" itemLabel="#{p.getMateriel().getNumparc()}" itemValue="#{p}" 
converter="numparc" forceSelection="true"> 
    <f:ajax execute="basicPojo1" listener="#{evenEdl.submitListener}" render="@all"/> 
</p:autoComplete> 


public void submitListener(AjaxBehaviorEvent event) { 
    String id = event.getComponent().getId(); 
    switch (id) { 
     case "basicPojo1": 
      String parametre = FacesContext.getCurrentInstance().getExternalContext() 
             .getRequestParameterMap().get("basicPojo1"); 
      System.out.println("test param"+parametre); 
       break; 
    } 
} 
+0

您希望獲得選定值的位置?你究竟在哪裏失敗? – user1983983

+0

在submitListener方法中,我的偵聽器正常工作,交換機檢索ID(框「basicPojo1」 - > ok)。其中,我希望檢索自動完成jsf的選定(In String參數)值以執行處理Bean端,但是我沒有成功使用此String參數= FacesContext.getCurrentInstance()。getExternalContext() .getRequestParameterMap()。獲得( 「basicPojo1」); – user2457232

+0

不完全確定你想要達到的目標。你需要怎樣處理選定的值?當您在自動完成中選擇一個值時,它將在最終提交表單時綁定到completeBean.selected1。或者你是否試圖在選擇該值時儘快填充其他內容? – zargarf

回答

1

這裏p的例子的所選擇的值:自動完成與實體轉換器:


工作面:

<p:autoComplete id="autocomplete1" value="#{mBAutoComplete.selectedEntity}" completeMethod="#{mBAutoComplete.complete}" 
    forceSelection="true" minQueryLength="3" maxResults="10"> 
    <p:ajax update="autocomplete1" event="itemSelect" listener="#{mBAutoComplete.updateEntity}" /> 
</p:autoComplete> 

轉換器:

@FacesConverter(forClass = Entity.class,value = "entityConveter") 
    public class EntityConverter implements Converter { 

     public EntityConverter() { 

     } 

     @Override 
     public Entity getAsObject(FacesContext arg0, UIComponent arg1, String arg2) { 
      // get Entity with WebService, but you can get it with other ways : 
      // like calling EJB methods or using a Collection of Entity provided in 
      // another managed bean 
      return services.getWebService().getEntity(Integer.valueOf(arg2)); 
     } 

     @Override 
     public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) { 
      return String.valueOf(((Entity) arg2).getEntityID()); 
     } 
    } 

ManagedBean:

@ManagedBean(name = "mBAutoComplete") 
@SessionScoped 
public class MBAutoComplete { 

    // Entity 
    private Entity selectedEntity; 

    // Entity Autocomplete 
    public List<String> complete(String query) { 

     List<String> results = new ArrayList<String>(); 

     for (Entity en : this.eqList) { 
      if (en.getEntityID().startsWith(query)) { 
       results.add(en.getEntityID()); 
      } 
     } 

     return results; 
    } 

    public void updateEntity(SelectEvent e) { 
     // Don't forget to check null Object sent by SelectEvent 
     this.selectedEntity = (Entity) e.getObject(); 
    } 

    // GETTERS & SETTERS 

    public void setSelectedEntity(Entity e) { 
     this.selectedEntity = e; 
    } 

    public Entity getSelectedEntity() { 
     return this.selectedEntity(); 
    } 

} 

在這個例子中,你並不需要使用FacesContext中,只要使用SelectEvent和轉換器。

希望得到這個幫助!