Hello!
I have a javascript function,
function onGetLatLng(gLatLng){
if(gLatLng == null) {
alert("Sorry, we couldn't find this address.");
return false;
}
new Ajax.Request(urlGetGroupsOnLocation, { onSuccess: updatePage,
parameters: 'lat='+gLatLng.lat() + '&lng=' + gLatLng.lng() +
'&radius=' +
50000});
}
..which is calling urlGetGroupsOnLocation in my class:
public Object onGetGroupsOnLocation(){
System.out.println("onGetGroupsOnLocation");
if (request.getParameter("lat") != null &&
request.getParameter("lng") !=
null){
Double lat = Double.parseDouble(
request.getParameter("lat") );
Double lng = Double.parseDouble(
request.getParameter("lng") );
Double radiusInMeters = Double.parseDouble(
request.getParameter("radius") ) / 2;
Geometry location = GeometryService.getPolygon(new
GeoPoint(lat, lng),
radiusInMeters.intValue());
groups = groupService.getGroupsOnLocation(location);
System.out.println("returnBody");
return zone.getBody();
}
System.out.println("null");
return null;
}
but, .. i dont know how to update the zone now with tapestry. zone.getBody
does not work. The only thing i managed was a hard approach within JS:
window.location.reload();
my full class:
package com.airwriting.frontend.pages.group;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.Link;
import org.apache.tapestry5.annotations.Import;
import org.apache.tapestry5.annotations.InjectComponent;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.corelib.components.Zone;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.services.Request;
import org.apache.tapestry5.services.javascript.JavaScriptSupport;
import se.unbound.tapestry.breadcrumbs.BreadCrumb;
import com.airwriting.configuration.Configuration;
import com.airwriting.domain.GeoPoint;
import com.airwriting.domain.Group;
import com.airwriting.service.GeometryService;
import com.airwriting.service.data.GroupService;
import com.vividsolutions.jts.geom.Geometry;
@Import(library = {
"context:js/browselocalgroups.js"
})
@BreadCrumb(titleKey="group/ListLocalGroups")
public class ListLocalGroups {
@Inject
private GroupService groupService;
@Inject
private JavaScriptSupport jsSupport;
@Inject
private Request request;
@Inject
private ComponentResources componentResources;
@Property
private Geometry location;
@Inject
private Configuration configuration;
@Property
private String googleMapsKey;
@Persist
@Property
private List<Group> groups;
@InjectComponent
private Zone zone;
@Property
private Group curGroup;
@Persist
private Date lastUpdate;
public void setupRender() {
if (request.getServerName().endsWith(".net")){
googleMapsKey =
configuration.getString("googleMaps.key.net");
}else if (request.getServerName().endsWith(".de")){
googleMapsKey =
configuration.getString("googleMaps.key.de");
}else if (request.getServerName().endsWith(".at")){
googleMapsKey =
configuration.getString("googleMaps.key.at");
}
else {//.com
googleMapsKey =
configuration.getString("googleMaps.key");
}
System.out.println("setupRender");
if (groups == null || groups.size() == 0){
System.out.println("createEventLink");
Link linkGetGroupsOnLocation =
componentResources.createEventLink("getGroupsOnLocation");
groups = new ArrayList<Group>();
if (lastUpdate == null ){
updatePage(linkGetGroupsOnLocation);
}else if (minutesDiff(lastUpdate, new Date()) > 1){
updatePage(linkGetGroupsOnLocation);
}
}else {
}
}
private void updatePage(Link linkGetGroupsOnLocation) {
jsSupport.addScript(
"init('%s');",
linkGetGroupsOnLocation.toURI());
lastUpdate = new Date();
}
public Object onGetGroupsOnLocation(){
System.out.println("onGetGroupsOnLocation");
if (request.getParameter("lat") != null &&
request.getParameter("lng") !=
null){
Double lat = Double.parseDouble(
request.getParameter("lat") );
Double lng = Double.parseDouble(
request.getParameter("lng") );
Double radiusInMeters = Double.parseDouble(
request.getParameter("radius") ) / 2;
Geometry location = GeometryService.getPolygon(new
GeoPoint(lat, lng),
radiusInMeters.intValue());
groups = groupService.getGroupsOnLocation(location);
System.out.println("returnBody");
return zone.getBody();
}
System.out.println("null");
return null;
}
private static int minutesDiff(Date earlierDate, Date laterDate)
{
if( earlierDate == null || laterDate == null ) return 0;
return (int)((laterDate.getTime()/60000) -
(earlierDate.getTime()/60000));
}
}
--
View this message in context:
http://tapestry.1045711.n5.nabble.com/updating-a-zone-from-javascript-tp5716428.html
Sent from the Tapestry - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]