【问题标题】:Displaying other details according to the selected option in grails根据grails中选择的选项显示其他细节
【发布时间】:2014-03-27 07:12:43
【问题描述】:
<head>
<g:javascript library='jquery' />
<r:layoutResources />
<script type="text/javascript">
    function getGroupsDetails(){
        var selectedGroup = jQuery("#group").val();
        if(selectedGroup != "")
            ${remoteFunction (controller: 'groups', action: 'details', params: '\'groupId=\' + selectedGroup', update: 'details')}
    }
</script>
</head>
<body>
    <div class="col-xs-12 col-sm-4">
        <strong>By Group Name :</strong>
        <g:select id="groups" name="groupName" from="${Groups.list()}" value="${groupsInstance?.id}" noSelection="['':'-Select-']" optionKey="id" onChange="getGroupsDetails();" />
        <div id="details"></div>
    </div>
</body>
</html>

具体动作如下

def details(){
    println "in details"
    def groupIns = Groups.get(params.id)
    println groupIns.id
    render(template: "details", model: [groupIns: groupIns])
 }

现在它进入了 javascript 以及细节控制器。在控制器中,我也打印了 id。但在 gsp 中它什么也没显示...

【问题讨论】:

    标签: javascript grails gsp


    【解决方案1】:

    在你的类中包含 toString。当对象打印我们的tostring时返回gname

        class Groups {
    
               String gowner
    
               String gname
    
               int devicenum
    
            static constraints = {
    
            }
    
    
            String toString() {
                "$gname"
            }
    
        }
    

    first.gsp:

    在 select 中不需要 list.gname(),因为我们包括 toString()。在下面,当我们选择 group 时,它会调用 javascript 函数,该函数将调用更新特定 div 的操作。我正在做ajax。

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <g:javascript library='jquery' />
    <r:layoutResources />
    
        <script type="text/javascript">
            function getGroupDetails(){
                        alert("Function calling");
                var selectedGroup = jQuery("#group").val();
                        alert(selectedGroup);
                if(selectedGroup != "")
                    ${remoteFunction (controller: 'group', action: 'details', params: '\'groupId=\' + selectedGroup', update: 'details')}
            }
    
        </script>
    </head>
    
    
    <g:select id="group" name="groupName" from="${Groups.list()}"
    value="${groupInstance?.id}" noSelection="['':'-Select-']" optionKey="id" 
    onChange="getGroupDetails();" />
    
    <div id="details"></div>
    

    控制器动作:

    def details(){
       println params.groupId
       def groupIns = Group.get(params.groupId)
       render(template: "details", model: [groupIns: groupIns])
    }
    

    _details.gsp:

     Name:${groupIns.gname}
     Owner:${groupIns.gowner}
     Devicenum:${groupIns.devicenum}
    

    【讨论】:

    • 当我选择组时没有任何反应。它没有给出任何东西
    • 请先检查是否调用了 javascript。然后检查您是否可以在操作中获取组 ID。您能否更新您的代码。?
    • Javascript 没有调用。
    • 对不起。为了支持 ajax,我们必须在 head 中包含 jquery 库。如果您有布局,请在其中提及。否则包含在您的页面中。请参阅我的更新代码。
    • 请看我更新的代码。首先检查javascript函数是否被调用,你是否收到2个警报。然后在行动中打印ID。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 2013-10-10
    • 2010-12-14
    • 2017-06-04
    • 1970-01-01
    相关资源
    最近更新 更多