2012-08-13 17 views
1

我正面臨轉換器的問題。在我的xhtml文件中,我有一個selectOneMenu對象列表,我想在我的managedBean中設置一個對象。轉換器不能用@ViewScoped

如果我的managedBean具有@SessionScoped,則會填充managedbean中的對象,但如果managedeban具有@ViewScoped,則轉換器永遠不會使用,並且我的對象爲空。

如何解決這個問題?

XHTML:可

<p:selectOneMenu value="#{rechercheBean.role}" converter="#{typConverter}"> 
    <f:selectItems id="item" value="#{typBean.roles}" var="r" itemLabel="#{r.valeur}" itemValue="#{r}" /> 
</p:selectOneMenu> 

typConverter:

public class TypConverter implements Converter{ 
    @EJB 
    private TypFacadeLocal TypBean; 

    public Object getAsObject(FacesContext facesContext, UIComponent component, String submittedValue) { 
     if (submittedValue.trim().equals("")) { 
      return null; 
     } 
     else { 
      try { 
       Integer id = Integer.parseInt(submittedValue); 
       Typ typ = new Typ(); 
       typ = TypBean.find(id); 
       return typ; 
      } 
      catch (NumberFormatException exception) { 
       throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "Typ non valide")); 
      } 
     } 
    } 

    public String getAsString(FacesContext facesContext, UIComponent component, Object value) { 
     if (value == null || value.equals("")) { 
      return ""; 
     } 
     else { 
      return String.valueOf(((Typ) value).getId()); 
     } 
    } 
} 

的Tx很多

+1

問題的原因在迄今爲止發佈的代碼中不可見。請張貼SSCCE。 – BalusC 2012-08-13 14:19:46

+0

這個問題沒有代碼錯誤......當managedBean是@ViewScoped時,managedBean中的對象保持爲空。如果我在TypConverter中放置一個斷點,它在這個範圍內永遠不會使用(與@SessionScoped相反) – holegeek 2012-08-13 14:49:41

+0

我明白這一點。我只是基本上告訴你,迄今爲止發佈的代碼看起來都很好,因此根據給定的代碼無法找到/理解具體問題的原因。您需要提供更多的上下文/代碼,以便我們可以找出真正的原因。一個SSCCE風格的片段將是最理想的(對於JSF來說,這基本上是**儘可能小的** XHTML文件和支持bean類,我們可以在不做任何修改的情況下複製'n'paste'n'run來自己查看問題) 。 – BalusC 2012-08-13 14:51:04

回答

-1

的問題是,組分c:當。使用組件的屬性渲染器,沒有問題。

相關問題