Я пытаюсь интегрировать свое приложение Grails с extJS.Ниже приведен код в моем файле edit.gsp.
<% @ page import = "tune.Music"%>
<script type="text/javascript">
var ds = new Ext.data.Store({
autoLoad: true,
proxy: new Ext.data.HttpProxy({
url: 'http://localhost:8080/tune/music/listData'}),
reader: new Ext.data.JsonReader({
results: 'total',
root:'items',
id:'id'
},
[
{name: 'playerId'},
{name: 'playerPrice'}
]
)
});
var cm = new Ext.grid.ColumnModel([
{header: "Player Id", width: 70, sortable:true, dataIndex: 'playerId'},
{header: "Player Price", width: 90, dataIndex: 'playerPrice'}
]);
//cm.defaultSortable = true;
// create the grid
var grid = new Ext.grid.GridPanel({
ds: ds,
cm: cm,
renderTo:'grid-example',
width:1300,
height:300
});
</script>
</head>
<body>
<div class="body">
<!--<g:javascript library="examples"/>-->
<!-- EXAMPLES -->
<h1>Ext Grid</h1>
<div id="grid-example"></div>
</div>
</body>
Действие моего контроллера:
def list = {}
def listData = {def session = sessionFactory.getCurrentSession () def result = session.createSQLQuery ("выбрать player_id из w.music, где player_id = ('530AS')").список();def tuneInstanceList = new ArrayList () result.each {def tune = new Tune () tune.playerId = it tune.playerPrice = "100" tuneInstanceList.add (tune)} def listResult = [total: tunInstanceList.size (), элементы: tunInstanceList] отображать listResult как JSON;}
Приведенный выше код работает для меня.
Однако, это работает в моей среде разработки.Если я запускаю это в другом env, он не работает из-за URL, который я жестко запрограммировал здесь, а именно: url: 'http://localhost:8080/tune/music/listData'.
Один из вариантов - использовать gsparse.Тем не менее, я хотел бы упомянуть здесь относительный urlPath, если это возможно.Чем я заменяю свой urlPath, чтобы правильное действие вызывалось даже в других средах.
Спасибо!