pickList
petitefl3ur Oct 26, 2009 6:56 AMHi everyone,
I have a strange behavior with a picklist...i'm quite resign because i don't understand why this piece of code doesn't work. I certainly miss something...
So let me explain, i work with Seam 2.2.0.GA and all libs that are package with this version.Server is jboss 5.1
I am initializing the pickList in a EBJ when i load the page
pages.xml
<page view-id="/skill.xhtml" no-conversation-view-id="/home.xhtml"> <action execute="#{skillAction.init()}" /> <navigation> <rule if-outcome="updated"> <redirect view-id="/user.xhtml" /> </rule> </navigation> </page>
SkillAction.java
public String init() { skills = skillDAO.findAuthorizedSkills(User.getId()); skillsSelected = skillDAO.findSelectedSkin(User.getId()); return "initialized"; } public String save() { user.setSkills(skillsSelected); user = entityManager.merge(user); entityManager.flush(); return "updated"; }
skill.xhtml
<rich:pickList id="skillPickList" value="#{skillAction.skillsSelected}"> <s:selectItems value="#{skillAction.skills}" var="_skill" label="#{_skill.name}"/> <s:convertEntity/> </rich:pickList> ... <h:commandLink id="skillSave" action="#{skillAction.save()}" > <h:outputText value="Save"/> </h:commandLink>
The thing is that it works perfectly the on the first launch...i can select or unselect items, the whole modification are put into the database.
But if i logout, or restart the server, my skills that are in the database are not display anymore in the pickList component. And when i log the size of the lists in the init method of the EJB skillAction, lists are with correct size everytime, but anything happened with the pickList component!
I have this in my component.xml in order to manager a converter
components.xml
<component name="org.jboss.seam.ui.entityConverter"> <property name="entityManager">#{entityManager}</property> </component>
and in Skill.java entity bean i have override equals method to get the comparaison on the id.
Where i am wrong? Why the richfaces component doesn't want my lists!? Do i have to write a specific converter?
Thx in advance.