2010-10-19 4 views
0

J'essaie d'intégrer mon application Grails avec extJS. Voici le code dans mon fichier edit.gsp.Comment faire pour mentionner l'action dans httpProxy url lorsque vous utilisez extJS avec Grails

<% @ Page import =% "de 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> 

Mon action du contrôleur:

def list = { }

def listData = {def session = sessionFactory.getCurrentSession() def résultat = session.createSQLQuery ("sélectionnez player_id de w.music où player_id = ('530AS')"). List(); def tuneInstanceList = new ArrayList() result.each {def = new air Tune() tune.playerId = il tune.playerPrice = "100" tuneInstanceList.add (air)} def = listResult [total: tunInstanceList.size(), éléments: tunInstanceList] render listResult as JSON; }

Le code ci-dessus fonctionne pour moi.

Cependant, cela fonctionne dans mon environnement de développement. Si je cours cela dans un autre env, cela ne fonctionne pas à cause de l'URL que j'ai codé en dur ici: 'http: // localhost: 8080/tune/music/listData'.

L'une des options est d'utiliser gsparse. Cependant, je voudrais mentionner un urlPath relatif ici si c'est possible. Que dois-je remplacer mon urlPath pour que la bonne action soit appelée même dans d'autres environnements.

Merci!

Répondre

1

a remplacé l'url HttpProxy comme

url: '/ air/musique/listData' et cela a fonctionné.

Merci!

Questions connexes