PDA

View Full Version : Paging Grid+JSon Reader Not getting data from given URL



venu
22 Jan 2009, 1:17 AM
Hi,

I am working with GWT+GXT+JSon.

I had a spring-hibernate-json application running on jboss on my machine.
When i browse the url:

http://localhost:9090/springdemo/diagnosis/list.do

i get the following json string on return.

{"results":[{"id":"11111111333","dispatchType":"WL","level":1,"status":"PENDING","description":"test demo","active":1,"code":"1234"},{"id":"ff8081811ef9c1de011ef9c2473d0001","dispatchType":"WL","level":1,"status":"PENDING","description":"Tetsing","active":1,"code":"3434"}],"total":2}

Problem:
--------
Now i had another application using GWT and GXT Paging Grid.
I am using json reader to read data from above given url.

code
=====================================================================================
public class DiagnosisList extends LayoutContainer {

public DiagnosisList() {
}

@Override
protected void onRender(Element parent, int index) {
super.onRender(parent, index);

//Layout for container
FlowLayout layout = new FlowLayout();
setLayout(layout);
setPagePosition((Window.getClientWidth()/2)-300, (Window.getClientHeight()/2)-200);
//Grid Column Configs
List<ColumnConfig> columnConfigList = new ArrayList<ColumnConfig>();

ColumnConfig colConfig = null;

colConfig = new ColumnConfig();
colConfig.setId("id");
colConfig.setHeader("ID");
colConfig.setWidth(100);
colConfig.setSortable(true);
columnConfigList.add(colConfig);

colConfig = new ColumnConfig();
colConfig.setId("code");
colConfig.setHeader("Code");
colConfig.setWidth(100);
colConfig.setSortable(true);
columnConfigList.add(colConfig);

colConfig = new ColumnConfig();
colConfig.setId("description");
colConfig.setHeader("Description");
colConfig.setWidth(150);
colConfig.setSortable(true);
columnConfigList.add(colConfig);

colConfig = new ColumnConfig();
colConfig.setId("dispatchType");
colConfig.setHeader("Dispatch Type");
colConfig.setWidth(100);
colConfig.setSortable(true);
columnConfigList.add(colConfig);

colConfig = new ColumnConfig();
colConfig.setId("status");
colConfig.setHeader("Status");
colConfig.setWidth(100);
colConfig.setSortable(true);
columnConfigList.add(colConfig);

colConfig = new ColumnConfig();
colConfig.setId("level");
colConfig.setHeader("Level");
colConfig.setWidth(50);
colConfig.setSortable(true);
columnConfigList.add(colConfig);

colConfig = new ColumnConfig();
colConfig.setId("active");
colConfig.setHeader("Active");
colConfig.setWidth(50);
colConfig.setSortable(true);
columnConfigList.add(colConfig);

ColumnModel columnModel = new ColumnModel(columnConfigList);

//Incoming data model type
ModelType type = new ModelType();
type.root = "results";
type.totalName = "total";
type.recordName = "id";
type.addField("id");
type.addField("code");
type.addField("description");
type.addField("dispatchType");
type.addField("status");
type.addField("level");
type.addField("active");

//Prepare the Request
//RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, "data/diagnosis.json");
String url = "http://127.0.0.1:9090/springdemo/diagnosis/list.do";
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);
HttpProxy proxy = new HttpProxy(builder);
//ScriptTagProxy<Object, PagingLoadResult<ModelData>> proxy = new ScriptTagProxy<Object, PagingLoadResult<ModelData>>(url);

//Reading JSon data
JsonReader<PagingLoadConfig> reader = new JsonReader<PagingLoadConfig>(type) {
@Override
protected ListLoadResult newLoadResult(PagingLoadConfig loadConfig, List<ModelData> models) {
PagingLoadResult result = new BasePagingLoadResult(models, loadConfig.getOffset(), loadConfig.getLimit());
return result;
}
};

BasePagingLoader loader = new BasePagingLoader(proxy,reader);
loader.setRemoteSort(true);
loader.load(0, 50);

final PagingToolBar toolBar = new PagingToolBar(5);
toolBar.bind(loader);

//Store
ListStore<DiagnosisModel> listStore = new ListStore<DiagnosisModel>(loader);

//Grid
final Grid grid = new Grid(listStore, columnModel);
grid.setLoadMask(true);
grid.setTitle("Diagnosis");
grid.setBorders(true);
grid.setEnableColumnResize(true);
grid.setWidth(600);
grid.setHeight(200);
grid.setToolTip("Diagnosis");
grid.show();

//Buttons-toolbar
ToolBar buttonBar = new ToolBar();
buttonBar.add(new AdapterToolItem(new Button("Add", new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
//MessageBox.alert("add", "add", null);
new DiagnosisAdd().show();
}
})));
buttonBar.add(new AdapterToolItem(new Button("Edit")));
buttonBar.add(new AdapterToolItem(new Button("Delete")));

//add to content panel
ContentPanel cp = new ContentPanel();
cp.setBodyBorder(false);
cp.setHeading("Diagnosis");
cp.setButtonAlign(HorizontalAlignment.CENTER);
cp.setLayout(new FitLayout());
cp.setWidth(700);
cp.setHeight(200);
cp.add(grid);
cp.setBottomComponent(toolBar);
cp.setTopComponent(buttonBar);

add(cp);
}

}

But, if i use the below line of code,
RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, "data/diagnosis.json");

Its getting data from file and displaying on the grid.

Can anyone help me to solve this problem?

Thanks,
Venu

gslender
22 Jan 2009, 2:40 AM
any error? is the server being requested? is this hosted mode ?

provide more details/logs or outputs from Hosted shell.

venu
22 Jan 2009, 5:42 PM
It is in hosted mode.

No error in logs and also in hosted mode screen.

When i see the XHR in fire bug, i didn't see any requests details for
http://127.0.0.1:9090/springdemo/diagnosis/list.do

Thx,
Venu

venu
22 Jan 2009, 6:33 PM
This is my piece of code.
Let me know if you can help me out figuring the problem.

public class DiagnosisList extends LayoutContainer {

public DiagnosisList() {
}

@Override
protected void onRender(Element parent, int index) {
super.onRender(parent, index);

//Layout for container
FlowLayout layout = new FlowLayout();
setLayout(layout);
setPagePosition((Window.getClientWidth()/2)-300, (Window.getClientHeight()/2)-200);
//Grid Column Configs
List<ColumnConfig> columnConfigList = new ArrayList<ColumnConfig>();

ColumnConfig colConfig = null;

colConfig = new ColumnConfig();
colConfig.setId("id");
colConfig.setHeader("ID");
colConfig.setWidth(100);
colConfig.setSortable(true);
columnConfigList.add(colConfig);

colConfig = new ColumnConfig();
colConfig.setId("code");
colConfig.setHeader("Code");
colConfig.setWidth(100);
colConfig.setSortable(true);
columnConfigList.add(colConfig);

colConfig = new ColumnConfig();
colConfig.setId("description");
colConfig.setHeader("Description");
colConfig.setWidth(150);
colConfig.setSortable(true);
columnConfigList.add(colConfig);

colConfig = new ColumnConfig();
colConfig.setId("dispatchType");
colConfig.setHeader("Dispatch Type");
colConfig.setWidth(100);
colConfig.setSortable(true);
columnConfigList.add(colConfig);

colConfig = new ColumnConfig();
colConfig.setId("status");
colConfig.setHeader("Status");
colConfig.setWidth(100);
colConfig.setSortable(true);
columnConfigList.add(colConfig);

colConfig = new ColumnConfig();
colConfig.setId("level");
colConfig.setHeader("Level");
colConfig.setWidth(50);
colConfig.setSortable(true);
columnConfigList.add(colConfig);

colConfig = new ColumnConfig();
colConfig.setId("active");
colConfig.setHeader("Active");
colConfig.setWidth(50);
colConfig.setSortable(true);
columnConfigList.add(colConfig);

ColumnModel columnModel = new ColumnModel(columnConfigList);

//Incoming data model type
ModelType type = new ModelType();
type.root = "results";
type.totalName = "total";
type.recordName = "id";
type.addField("id");
type.addField("code");
type.addField("description");
type.addField("dispatchType");
type.addField("status");
type.addField("level");
type.addField("active");

//Prepare the Request
//RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, "data/diagnosis.json");
String url = "http://127.0.0.1:9090/springdemo/diagnosis/list.do";
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);
HttpProxy proxy = new HttpProxy(builder);
//ScriptTagProxy<Object, PagingLoadResult<ModelData>> proxy = new ScriptTagProxy<Object, PagingLoadResult<ModelData>>(url);

//Reading JSon data
JsonReader<PagingLoadConfig> reader = new JsonReader<PagingLoadConfig>(type) {
@Override
protected ListLoadResult newLoadResult(PagingLoadConfig loadConfig, List<ModelData> models) {
PagingLoadResult result = new BasePagingLoadResult(models, loadConfig.getOffset(), loadConfig.getLimit());
return result;
}
};

BasePagingLoader loader = new BasePagingLoader(proxy,reader);
loader.setRemoteSort(true);
loader.load(0, 50);

final PagingToolBar toolBar = new PagingToolBar(5);
toolBar.bind(loader);

//Store
ListStore<DiagnosisModel> listStore = new ListStore<DiagnosisModel>(loader);

//Grid
final Grid grid = new Grid(listStore, columnModel);
grid.setLoadMask(true);
grid.setTitle("Diagnosis");
grid.setBorders(true);
grid.setEnableColumnResize(true);
grid.setWidth(600);
grid.setHeight(200);
grid.setToolTip("Diagnosis");
grid.show();

//Buttons-toolbar
ToolBar buttonBar = new ToolBar();
buttonBar.add(new AdapterToolItem(new Button("Add", new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
//MessageBox.alert("add", "add", null);
new DiagnosisAdd().show();
}
})));
buttonBar.add(new AdapterToolItem(new Button("Edit")));
buttonBar.add(new AdapterToolItem(new Button("Delete")));

//add to content panel
ContentPanel cp = new ContentPanel();
cp.setBodyBorder(false);
cp.setHeading("Diagnosis");
cp.setButtonAlign(HorizontalAlignment.CENTER);
cp.setLayout(new FitLayout());
cp.setWidth(700);
cp.setHeight(200);
cp.add(grid);
cp.setBottomComponent(toolBar);
cp.setTopComponent(buttonBar);

add(cp);
}

}

gslender
22 Jan 2009, 9:14 PM
just confirming, are you trying to load the site from the hosted browser?

If so, have you added http://127.0.0.1:9090 to the white list?

To test, run the hosted shell, and put http://127.0.0.1:9090 in the hosted browser and confirm you get the results you are expecting.

venu
23 Jan 2009, 12:47 AM
I made some changes and now the application is getting json data from server.

scenario:
1) spring-hibernate-json application running on jobss (48080).
2) GWT 1.5.2 , GXT 1.2 with Jsonreader running on hosted mode and also bundled as war running on jboss (48080).

But now i got another problem with SOP (same origin policy)

When testing as war bundle,
1) IE - works.
2) Firefox - SOP problem

When testing in host mode,

SOP problem.

added http://127.0.0.1:9090 (http://127.0.0.1:9090/) to the white list, still same problem.

Help needed....

Thx,
Venu

gslender
23 Jan 2009, 1:40 AM
These are all GWT issues - so have read of all this... http://code.google.com/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkit-doc-1-5&t=FAQ_Server

venu
28 Jan 2009, 7:51 PM
I had gone through this link :
http://code.google.com/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkit-doc-1-5&t=FAQ_JSONFeedsFromOtherDomain

for
How can I dynamically fetch JSON feeds from other web domains?

Still i am confused.

Can you tell me how to use that technique in my code.

thx.

Moha079
29 Sep 2010, 12:02 AM
I have problem when created Grid using GXT...whrn run page the grid does not have any data..but when click refresh button in paging toolbar,,,data showing in grid...i use this code:

public class PagingGrid extends LayoutContainer {
public PagingGrid() {

}

public final PagingToolBar toolBar = new PagingToolBar(10);
public ArrayList<Opcode> opcodeArr = null;

public static String countryName = "";

@Override
protected void onRender(com.google.gwt.user.client.Element parent, int index) {
super.onRender(parent, index);

FlowLayout layout = new FlowLayout(10);
setLayout(layout);
// add paging support for a local collection of models
PagingModelMemoryProxy proxy = new PagingModelMemoryProxy( getOpcodes(countryName) );


// loader
final PagingLoader<PagingLoadResult<Opcode>> loader = new BasePagingLoader<PagingLoadResult<Opcode>>(proxy);

ListStore<Opcode> store = new ListStore<Opcode>(loader);
//loader.load(0, 10);
loader.setRemoteSort(true);

toolBar.bind(loader);
loader.load(0,10);
store.commitChanges();
List<ColumnConfig> configs = new ArrayList<ColumnConfig>();

ColumnConfig column = new ColumnConfig();
column.setId("opName");
column.setHeader("Operator Name");
column.setWidth(100);
configs.add(column);

column = new ColumnConfig();
column.setId("opCode");
column.setHeader("Operator Code");
column.setWidth(100);
configs.add(column);

ColumnModel cm = new ColumnModel(configs);

Grid<Opcode> grid = new Grid<Opcode>(store, cm);
grid.setLoadMask(true);
grid.setBorders(true);
store.commitChanges();
grid.getStore();
grid.setAutoExpandColumn("opName");
grid.setStyleName(".x-grid-empty");

ContentPanel cp = new ContentPanel();
cp.setFrame(true);
cp.setCollapsible(true);
cp.setHeading("Local Paging Grid");
//cp.setIcon(Resources.ICONS.table());
cp.setButtonAlign(HorizontalAlignment.CENTER);
cp.setLayout(new FitLayout());
cp.setBottomComponent(toolBar);
cp.setSize(400, 175);
cp.setAnimCollapse(false);
// cp.setIcon(Resources.ICONS.table());
cp.setBottomComponent(toolBar);






/* cp.addListener(Events.Change, new Listener<GridEvent<Opcode>>() {
public void handleEvent(GridEvent<Opcode> be) {
// TODO Auto-generated method stub
toolBar.refresh();

}
});*/



cp.add(grid);


add(cp);
}

public ArrayList<Opcode> getOpcodes(final String country)
{
opcodeArr = new ArrayList<Opcode>();


DBI.Util.getInstance().getopcodeperCountries(country, new AsyncCallback<ArrayList<Opcode>>(){

public void onFailure(Throwable caught) {
// Show the RPC error message to the user
String errStr = "Failure While Retrieving Operator Codes For " + country;
Window.alert( errStr );
}

public void onSuccess(ArrayList<Opcode> result) {
if (result.size()==0)
{
String errStr = "cannot retrieve operatorCodes for " + country;
Window.alert( errStr );
}




for ( int i = 0 ; i < result.size() ; i++ )

{
Opcode tmpCoun = result.get(i);
opcodeArr.add ( new Opcode( tmpCoun.getName(), tmpCoun.getOpcode()) );

}

}

});

/*DBI.Util.getInstance().getopcodeperCountries(country, new AsyncCallback<ArrayList<Opcode>>(){

public void onFailure(Throwable caught) {
// Show the RPC error message to the user
String errStr = "Failure While Retrieving Operator Codes For " + country;
Window.alert( errStr );
}*/

return opcodeArr;
}


}