myfaces-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From MPF <markus.pfeif...@procon.co.at>
Subject myFaces 1.2 - Converter Problem
Date Mon, 03 Mar 2008 15:36:48 GMT

Hi!
I use 
Tomcat 6
myFaces 1.2.2
tomahawk 1.1.6

I tried do create a Converter for following model:


public class PlanningPoint {
	private String country;
	private String location;
	private String street;
	private String postCode;
	private String houseNumber;
	private String identifier;

	public PlanningPoint(final String country, final String location, final
String street,
			final String postCode, final String houseNumber) {
		super();
		this.country = country;
		this.location = location;
		this.street = street;
		this.postCode = postCode;
		this.houseNumber = houseNumber;
	}

	public PlanningPoint() {
	}

	public String toString() {
		return this.country + ";" + this.location + ";" + this.street + ";" +
this.postCode + ";"
			+ this.houseNumber + ";" + this.identifier;
	}

	public String getCountry() {
		return this.country;
	}

	public void setCountry(final String country) {
		this.country = country;
	}

	public String getLocation() {
		return this.location;
	}

	public void setLocation(final String location) {
		this.location = location;
	}

	public String getStreet() {
		return this.street;
	}

	public void setStreet(final String street) {
		this.street = street;
	}

	public String getPostCode() {
		return this.postCode;
	}

	public void setPostCode(final String postCode) {
		this.postCode = postCode;
	}

	public String getHouseNumber() {
		return this.houseNumber;
	}

	public void setHouseNumber(final String houseNumber) {
		this.houseNumber = houseNumber;
	}

	public String getIdentifier() {
		return this.identifier;
	}

	public void setIdentifier(final String identifier) {
		this.identifier = identifier;
	}
}


Thats the converter:

public class PlanningPointConverter implements Converter {

	public Object getAsObject(final FacesContext context, final  UIComponent
component, final String value) {
		if (value == null) {
			return new PlanningPoint();
		} else if (value.isEmpty()) {
			return new PlanningPoint();
		}
		PlanningPoint p = new PlanningPoint();
		try {
		    String [] pComps = StringUtility.split(value, ";");
		    p.setCountry(pComps[0]);
		    p.setLocation(pComps[1]);
		    p.setStreet(pComps[2]);
		    p.setPostCode(pComps[3]);
		    p.setHouseNumber(pComps[4]);
		    p.setIdentifier(pComps[5]);
		} catch (ConverterException e) {
			e.printStackTrace();
		}
	    return p;
	}	

	public String getAsString(final FacesContext context, final  UIComponent
component, final Object value) {
		if (value.equals("") || value == null) {
			return "";
		} else {
			
		}
		PlanningPoint p = (PlanningPoint) value;
		String s = "";
		try {
			s = ((PlanningPoint) value).toString();		
		} catch (ConverterException e) {
			e.printStackTrace();
		}
		return s;
	}	
}


jsp snippet:

<h:panelGrid id="planningPG5" columns="2" border="1">
			<h:outputText value="#{labels.planStartDropdown}"
				styleClass="outputText"
				rendered="#{planningContrl.renderGeoDropDownStart}" />
			<h:selectOneMenu id="planGeoDropdown1"
				value="#{planningContrl.geoStartDropDownSelected}"
				rendered="#{planningContrl.renderGeoDropDownStart}">
				<f:converter converterId="planningPointConverter" />
				<f:selectItems value="#{planningContrl.geoStartDropDownList}" />
			</h:selectOneMenu>
			<h:outputText value="#{labels.planEndDropdown}"
				styleClass="outputText"
				rendered="#{planningContrl.renderGeoDropDownEnd}" />
			<h:selectOneMenu id="planGeoDropdown2"
				value="#{planningContrl.geoEndtDropDownSelected}"
				rendered="#{planningContrl.renderGeoDropDownEnd}">
				<f:converter converterId="planningPointConverter" />
				<f:selectItems value="#{planningContrl.geoEndDropDownList}" />
			</h:selectOneMenu>
		</h:panelGrid>


controller snippet:

public class PlanningController {
	private boolean renderGeoDropDownStart;
	private boolean renderGeoDropDownEnd;
	private List<SelectItem> geoEndDropDownList;
	private PlanningPoint geoEndtDropDownSelected;
	private List<SelectItem> geoStartDropDownList;
	private PlanningPoint geoStartDropDownSelected;

public void geocodeStart(final ActionEvent event) {
		try {
			this.setDropDownGeo(this.model.geocode(this.startPoint),
PlanningController.DropDown.GEO_START);
			this.startPoint = new PlanningPoint();
			this.renderGeoDropDownStart = true;
		} catch (WebserviceException e) {
			UIComponent component =
ComponentSupport.getComponentById("subViewPlanning:fPlanning");
			ComponentSupport.showMessageFromBundle(component, "errorMsgWebservice");
		}
	}

	public void geocodeEnd(final ActionEvent event) {
		try {
			this.setDropDownGeo(this.model.geocode(this.endPoint),
PlanningController.DropDown.GEO_END);
			this.endPoint = new PlanningPoint();
			this.renderGeoDropDownEnd = true;
		} catch (WebserviceException e) {
			UIComponent component =
ComponentSupport.getComponentById("subViewPlanning:fPlanning");
			ComponentSupport.showMessageFromBundle(component, "errorMsgWebservice");
		}
	}

	private void setDropDownGeo(final List<PlanningPoint> l, final DropDown d)
{
		List<SelectItem> tmpList = new LinkedList<SelectItem>();
		tmpList.add(new SelectItem(""));
		for (PlanningPoint p : l) {
			this.geoStartDropDownSelected = p;
			tmpList.add(new SelectItem(p, p.getIdentifier()));
		}		
		switch (d) {
		case GEO_START:
			this.geoStartDropDownList.addAll(tmpList);						
			break;
		case GEO_END:
			this.geoEndDropDownList.addAll(tmpList);						
			break;
		default:
			break;
		}
	}

	public List<SelectItem> getGeoEndDropDownList() {
		return this.geoEndDropDownList;
	}

	public void setGeoEndDropDownList(final List<SelectItem>
geoEndDropDownList) {
		this.geoEndDropDownList = geoEndDropDownList;
	}

	public PlanningPoint getGeoEndtDropDownSelected() {
		return this.geoEndtDropDownSelected;
	}

	public void setGeoEndtDropDownSelected(final PlanningPoint
geoEndtDropDownSelected) {
		this.geoEndtDropDownSelected = geoEndtDropDownSelected;
	}

	public List<SelectItem> getGeoStartDropDownList() {
		return this.geoStartDropDownList;
	}

	public void setGeoStartDropDownList(final List<SelectItem>
geoStartDropDownList) {
		this.geoStartDropDownList = geoStartDropDownList;
	}

	public PlanningPoint getGeoStartDropDownSelected() {
		return this.geoStartDropDownSelected;
	}

	public void setGeoStartDropDownSelected(final PlanningPoint
geoStartDropDownSelected) {
		this.geoStartDropDownSelected = geoStartDropDownSelected;
	}

	public boolean isRenderGeoDropDownStart() {
		return this.renderGeoDropDownStart;
	}

	public void setRenderGeoDropDownStart(final boolean renderGeoDropDownStart)
{
		this.renderGeoDropDownStart = renderGeoDropDownStart;
	}

	public boolean isRenderGeoDropDownEnd() {
		return this.renderGeoDropDownEnd;
	}

	public void setRenderGeoDropDownEnd(final boolean renderGeoDropDownEnd) {
		this.renderGeoDropDownEnd = renderGeoDropDownEnd;
	}
}


If I tried out this at the first (meaning loading values from one of the
renderGeoDropDownStart)  all work correctly but if I reload
renderGeoDropDownStart nothing occur - That means no CommandButton works or
the reloading is completed.

Faces Traces says:
Request Lifecycle:
Restore View (GREEN) --->	Apply Request (GREEN) --->	Validations (RED =
ERROR) ---> Update Model (GREY) --> Application (GREY) ---> Response (GREEN)

ERROR MESSAGES 
Component ID: subViewPlanning:fPlanning:planGeoDropdown1 
Severity: ERROR 
Message: subViewPlanning:fPlanning:planGeoDropdown1: Validierungsfehler:
Wert ist keine g├╝ltige Auswahl
(in english I think thats mean: validation error: value is not a valid
option)

someone know whats going wrong?

best regards
-- 
View this message in context: http://www.nabble.com/myFaces-1.2---Converter-Problem-tp15806504p15806504.html
Sent from the MyFaces - Users mailing list archive at Nabble.com.


Mime
View raw message