grails:将数据从控制器响应传递给modalbox

时间:2014-10-08 10:44:50

标签: grails modal-dialog

我有一个gsp页面,用户将输入一些信息并确认他的选择。 所以,我需要在提交流程之前控制输入的数据。

我想在模式框中显示对用户的响应,用户可以更改某些数据,然后确认。 响应由控制器根据用户输入的参数进行处理,并准备要呈现的数据列表。

如何在模态框中显示从控制器回复的响应?

修改

第一页包含一个表单,允许用户选择在此类目录中导入文件,并在响应(第二页)中,应用程序显示用户选择导入某些文件而忽略其他文件的文件列表。 / p>

第一页:index.gsp

    <g:form id="imp" name="imp" action="test_import">
Periode :<g:select from="${allPer}" id="per" name="per" optionKey="id"  value="${per }" /><br>Directory :<g:select from="${alldr}" id="dr" name="dr" optionKey="id"  value="${dr}"  /><g:actionSubmit class="button-submit" value="Import"   /> </g:form>

控制器:

def test_import = {
    def dir = null
    def per = null
    def file_to_import 


    if(params.coo != null && params.dr != null) {
        dir= Directory.get(params.dr)
        per = Period.get(params.per)
        file_to_import = Import_file.withCriteria()
                    {
                        eq('directory',dir)
                        eq('periode', per)
                    }
    }



    [file:file_to_import]
}

第二页:test_import.gsp

<g:form id="imp" name="imp" url="[controller:'Import',action:'import_ok']">   


         <table>         
         <tr><td></td>             
                  <td><strong>Ignore</strong></td>
                  <td ><strong>import</strong></td>
                </tr>

                 <g:findAll in="${file_to_import}" expr="1" >
                  <tr>                      
                  <td>${it.name}</td>
                  <td><g:radio id="group_${it.id}" name="group_${it.id}" value="1" checked="${false}"  /></td>                      <td><g:radio id="group_${it.id}" name="group_${it.id}" value="1" checked="${false}"  /></td>                      
                   </tr>
                 </g:findAll></table> <g:actionSubmit class="button-submit" value="Import" action="import_ok" /></form>

我想在模态框中显示第二页的内容。

1 个答案:

答案 0 :(得分:0)

我试过这样做:

在gsp页面中,我创建了2个javacsript函数,第一个调用控制器,第二个使用操作的响应在对话框中处理它。

<a href="javascript:test_import()" onclick="javascript:test_import()">Import</a>
<g:javascript >
    function test_import(){
        ${remoteFunction(action:'test_file_import', controller:'Import', params: '\'dir=\'+document.getElementById(\'dir\').value ',onSuccess: 'CreateDialog(e)')}  
        }

    function CreateDialog(e){   
          var files = eval("(" + e.responseText + ")") 
          return $("<div class='dialog' title=''><p>" + files[0].name + "</p></div>")
            .dialog({
                autoOpen: true,
                width: 400,
                resizable: false,
                height:140,
                modal: true,
                buttons: {
                    "Confirm": function() {
                        $( this ).dialog( "close" );
                    },
                    Cancel: function() {
                        $( this ).dialog( "close" );
                    }
                }
            });
          }

在我的控制器中,

def test_file_import = {
    def file = File.get(params.dir)
    FunctionsService fs = new FunctionsService()
    def files= fs.get_files(file)
    render files as JSON
}

问题:控制器无法读取参数,文件对象无法转换为JSON响应!

感谢您的帮助。