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很多
問題的原因在迄今爲止發佈的代碼中不可見。請張貼SSCCE。 – BalusC 2012-08-13 14:19:46
這個問題沒有代碼錯誤......當managedBean是@ViewScoped時,managedBean中的對象保持爲空。如果我在TypConverter中放置一個斷點,它在這個範圍內永遠不會使用(與@SessionScoped相反) – holegeek 2012-08-13 14:49:41
我明白這一點。我只是基本上告訴你,迄今爲止發佈的代碼看起來都很好,因此根據給定的代碼無法找到/理解具體問題的原因。您需要提供更多的上下文/代碼,以便我們可以找出真正的原因。一個SSCCE風格的片段將是最理想的(對於JSF來說,這基本上是**儘可能小的** XHTML文件和支持bean類,我們可以在不做任何修改的情況下複製'n'paste'n'run來自己查看問題) 。 – BalusC 2012-08-13 14:51:04