我有一个接受用户参数的页面。我使用params.playerId在我的动作中读取了这个参数。然后用它进行计算。
我现在更改了我的UI,并使用extJS进行显示。 因此,我有一个编辑和editData操作。 editData操作有代码来运行sql并执行相应的js文件并显示edit.jsp。但是,在editData操作中,当我使用params.playerId时,我得到一个空值。
这种情况可以解决什么问题?
在与extJS集成之前的代码:调用list动作,list.gsp显示数据。
def list = {
def session = sessionFactory.getCurrentSession()
def result = session.createSQLQuery(“从w.music中选择player_id,其中player_id =(params.playerId)”)。list();
def tuneInstanceList = new ArrayList()
def tune = new Tune()
result.each
{
tune.playerId =它
tune.playerPrice =“100”tuneInstanceList.add(tune)
}
[recoveryInstanceList:recoveryInstanceList]
}
现在,当我与extJS集成时,我将params.playerId的值设为null。代码如下。
的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;
}
如何检索用户输入的参数??
谢谢!
答案 0 :(得分:1)
通过读取list()动作中的参数并将其保存在会话中来解决此问题。
然后在listData()动作中使用此会话数据来进行计算。
不确定这是否是最佳方法。这只是一种解决方法。