Чтение параметров, введенных на экране - PullRequest
0 голосов
/ 18 октября 2010

У меня есть страница, которая принимает параметры от пользователя. Я прочитал этот параметр в своем действии, используя params.playerId. и затем сделайте вычисления с ним.

Я изменил свой пользовательский интерфейс и использую extJS для отображения. Поэтому у меня есть действия edit и dataData. Действие editData содержит код для запуска sql и выполнения соответствующего файла js и отображает edit.jsp. Однако в действии editData, когда я использую params.playerId, я получаю нулевое значение.

Каким может быть обходной путь для этого сценария?

Мой код перед интеграцией с extJS: вызывается действие list и list.gsp отображается с данными.

def list = {

def session = sessionFactory.getCurrentSession () def result = session.createSQLQuery ("выберите player_id из w.music, где player_id = (params.playerId)"). list ();
def tuneInstanceList = new ArrayList ()
def tune = new Tune ()
result.each
{ tune.playerId = it
tune.playerPrice = "100" tuneInstanceList.add (мелодия)
} [recoveryInstanceList: recoveryInstanceList]
}
Теперь, когда я интегрируюсь с extJS, я получаю значение params.playerId как ноль. Код ниже.

list.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> 

<div class="body"> 
<!--<g:javascript library="examples"/>--> 
<!-- EXAMPLES --> 
<h1>Ext Grid</h1> 



 <div id="grid-example"></div> 


</div> 

Действие моего контроллера:

def list={ }

def listData = {
 def session = sessionFactory.getCurrentSession()   
def result = session.createSQLQuery("select player_id from w.music where player_id=    (params.playerId)").list();   
def tuneInstanceList = new ArrayList()   
result.each {  
 def tune = new Tune()  
 tune.playerId = it tune.playerPrice = "100"   
tuneInstanceList.add(tune)  
 }   
def listResult = [total: tunInstanceList.size(), items: tunInstanceList]  
 render listResult as JSON;   

}

Как я могу получить параметры, которые были введены пользователем ??

Спасибо!

1 Ответ

1 голос
/ 08 ноября 2010

Чтобы обойти эту проблему, нужно прочитать параметры в действии list () и сохранить их в сеансе.

Затем использовать эти данные сеанса в действии listData () для выполнения вычислений.

Не уверен, что это лучший подход.Это просто обходной путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...