[JBoss Seam] - converter and dropdowns
by leeovan
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@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
18Â years, 9Â months
[JBossWS] - Error accessing Web service
by Mehdi.b
Hello !
I'm french, so excuse my possible langage faults ! :)
I created an EJB 3 session bean and deployed it as a web service. Everything looks working great. I've tried it in a Web Service Explorer.
This is my WSDL
| ?
| <definitions name="HelloBeanService" targetNamespace="http://ws.cdam.clemessy.com/jaws">
| ?
| <types>
| ?
| <schema elementFormDefault="qualified" targetNamespace="http://ws.cdam.clemessy.com/jaws">
| ?
| <complexType name="hello">
| ?
| <sequence>
| <element name="String_1" nillable="true" type="string"/>
| </sequence>
| </complexType>
| ?
| <complexType name="helloResponse">
| ?
| <sequence>
| <element name="result" nillable="true" type="string"/>
| </sequence>
| </complexType>
| <element name="hello" type="tns:hello"/>
| <element name="helloResponse" type="tns:helloResponse"/>
| </schema>
| </types>
| ?
| <message name="HelloBean_helloResponse">
| <part element="tns:helloResponse" name="result"/>
| </message>
| ?
| <message name="HelloBean_hello">
| <part element="tns:hello" name="parameters"/>
| </message>
| ?
| <portType name="HelloBean">
| ?
| <operation name="hello">
| <input message="tns:HelloBean_hello"/>
| <output message="tns:HelloBean_helloResponse"/>
| </operation>
| </portType>
| ?
| <binding name="HelloBeanBinding" type="tns:HelloBean">
| <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
| ?
| <operation name="hello">
| <soap:operation soapAction=""/>
| ?
| <input>
| <soap:body use="literal"/>
| </input>
| ?
| <output>
| <soap:body use="literal"/>
| </output>
| </operation>
| </binding>
| ?
| <service name="HelloBeanService">
| ?
| <port binding="tns:HelloBeanBinding" name="HelloBeanPort">
| <soap:address location="http://bureau:8080/EJBWS2/HelloBean"/>
| </port>
| </service>
| </definitions>
|
The problem comes with the client, here is the code
| URL wsdlLocation;
|
| try {
|
| wsdlLocation = new URL("http://bureau:8080/EJBWS2/HelloBean?wsdl");
| QName serviceNameQ = new QName( "http://ws.cdam.clemessy.com/jaws", "HelloBeanService");
|
| // dynamic service usage
| Service service = Service.create(wsdlLocation, serviceNameQ);
|
| //String namespace = "http://ws.cdam.clemessy.com/jaws";
| //String portName = "HelloBeanPort";
| //QName portQN = new QName(namespace, portName);
|
| //HelloBean proxy = service.getPort(portQN, HelloBean.class);
| HelloBean proxy = service.getPort(HelloBean.class);
| //HelloBean proxy = service.getPort(serviceNameQ,HelloBean.class);
|
| /*
| Iterator<QName> itPort = service.getPorts(); // Iterate trough the ports
| while (itPort.hasNext()) { // For each port in WSDL
| QName port = itPort.next();
| System.out.println("port : "+port);
| HelloBean proxy = service.getPort(port,HelloBean.class);
| }*/
|
|
|
| } catch (MalformedURLException ex) {
| ex.printStackTrace();
| }
|
and i have the following error
| Exception in thread "main" No corresponding port found for the service interface com.clemessy.cdam.ws.HelloBean in http://bureau:8080/EJBWS2/HelloBean?wsdl
| at com.sun.xml.ws.client.ServiceContextBuilder.processAnnotations(ServiceContextBuilder.java:110)
| at com.sun.xml.ws.client.ServiceContextBuilder.completeServiceContext(ServiceContextBuilder.java:85)
| at com.sun.xml.ws.client.WSServiceDelegate.processServiceContext(WSServiceDelegate.java:114)
| at com.sun.xml.ws.client.WSServiceDelegate.createEndpointIFBaseProxy(WSServiceDelegate.java:266)
| at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:162)
| at javax.xml.ws.Service.getPort(Service.java:120)
| at clientejbws2.Main.main(Main.java:48)
|
If someone has a solution, I would be grateful !
Thanks in advance.
Best regards.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4060102#4060102
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4060102
18Â years, 9Â months