[jboss-user] [JBoss Seam] - converter and dropdowns
leeovan
do-not-reply at jboss.com
Tue Jul 3 15:12:55 EDT 2007
hello im trying to understand converters and also their place in dropdowns.. I have seen many posts about seams new s:convertEntity but i dont want an entity. Im thinking i want something like this..
a base class that all objects of the type i want to display will extend.
|
| public class ReferenceData {
| private String name;
| private Integer id;
|
| public ReferenceData(Integer id, String name) {
| this.id = id;
| this.name = name;
| }
|
| public Integer getId() {
| return id;
| }
|
| public void setId(Integer id) {
| this.id = id;
| }
|
| public String getName() {
| return name;
| }
|
| public void setName(String name) {
| this.name = name;
| }
| }
|
|
then i have a class that extends this. with nothing else in it.
i then use this to make my list of objects to display on the screen
| public static final Vector<JobType> getMyJobTypes() {
| Vector<JobType> types = new Vector<JobType>();
| types.add(new JobType(new Integer(1), "hello1"));
| types.add(new JobType(new Integer(2), "hello2"));
| types.add(new JobType(new Integer(3), "hello3"));
|
| return types;
| }
|
with this
| <h:selectOneMenu value="#{jobManagerHome.selectedJobType}" converter="#{converters.referenceDataConverter}">
| <s:selectItems
| value="#{jobManagerHome.jobDetailTypesRefData}"
| var="jt"
| label="#{jt.name}" />
| <a:support event="onchange" />
|
| </h:selectOneMenu>
|
this is the converter
|
| @Name("referenceDataConverter")
| @Intercept(NEVER)
| @Converter
| public class ReferenceDataConverter implements javax.faces.convert.Converter {
| List<ReferenceData> list;
|
| public String getAsString(FacesContext facesContext, UIComponent component, Object obj) {
| if (obj == null)
| return null;
|
| ReferenceData referenceData = (ReferenceData) obj;
| String val = String.valueOf(referenceData.getName());
| return val;
| }
|
| public Object getAsObject(FacesContext facesContext, UIComponent component, String string)
| throws ConverterException {
| if (string == null || string.length() == 0) {
| return null;
| }
|
| int id = Integer.valueOf(string).intValue();
| for (ReferenceData referenceData : list) {
| if (referenceData.getId() == id) {
| return referenceData;
| }
| }
|
| return null;
| }
|
| }
|
however i get this error
|
| java.lang.IllegalArgumentException: Value is no String (class=uk.co.anotion.entity.jobs.JobType, value=uk.co.anotion.entity.jobs.JobType at 5d8897) and component jobDetail:_id0with path: {Component-Path : [Class: org.ajax4jsf.framework.ajax.AjaxViewRoot,ViewId: /JobDetailEditComponent.xhtml][Class: javax.faces.component.html.HtmlForm,Id: jobDetail][Class: org.richfaces.component.html.HtmlPanel,Id: jobSelectionPanel][Class: javax.faces.component.html.HtmlSelectOneMenu,Id: _id0]} does not have a Converter
| at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getConvertedStringValue(RendererUtils.java:536)
| at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getConvertedStringValue(RendererUtils.java:555)
| at org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils.renderSelectOptions(HtmlRendererUtils.java:398)
| at org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils.internalRenderSelect(HtmlRendererUtils.java:298)
| at org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils.renderMenu(HtmlRendererUtils.java:252)
| at org.apache.myfaces.shared_impl.renderkit.html.HtmlMenuRendererBase.encodeEnd(HtmlMenuRendererBase.java:54)
| at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:536)
| at org.ajax4jsf.framework.renderer.RendererBase.renderChild(RendererBase.java:286)
| at org.ajax4jsf.framework.renderer.RendererBase.renderChildren(RendererBase.java:262)
| at org.richfaces.renderkit.html.PanelRenderer.doEncodeChildren(PanelRenderer.java:189)
| at org.richfaces.renderkit.html.PanelRenderer.doEncodeChildren(PanelRenderer.java:184)
| at org.ajax4jsf.framework.renderer.RendererBase.encodeChildren(RendererBase.java:121)
| at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:524)
| at com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:244)
| at com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:249)
| at com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:249)
| at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:573)
| at org.ajax4jsf.framework.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
| at org.ajax4jsf.framework.ajax.AjaxViewHandler.renderView(AjaxViewHandler.java:229)
| at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:384)
| at javax.faces.webapp.FacesServlet.service(FacesServlet.java:138)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
| at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:63)
| at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:57)
|
|
any help welcome
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4060112#4060112
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4060112
More information about the jboss-user
mailing list