如何在不使用grails中的另一个视图的情况下执行操作?

时间:2013-05-14 14:44:39

标签: ajax grails controller action

我有一个启动服务器并停止服务器的代码。但是,当我按下按钮时服务器启动但它也会将我重定向到新视图。控制器中的代码是

def test= amazonWebService.ec2.startInstances(new StartInstancesRequest([InstanceToStart]))

我希望在按下按钮时执行测试而不进入新视图。我在gsp页面中的代码是

 <g:link action="test">
        <input type="button" value="Start Server" class="button" id="startServer1" />
    </g:link>

3 个答案:

答案 0 :(得分:1)

如果您不介意刷新页面,请在测试操作中重定向到您来自的同一视图。因此,假设您通过索引获取当前视图:

class SomeController {

   def index() {
     // index.gsp rendered via convention
   }

   def test() {
      // execute your code then
      redirect action: index, params: params
   }
}

您可以选择在单击链接时提交Ajax请求,而不必刷新页面。

答案 1 :(得分:0)

使用远程功能,请参阅此处http://grails.org/doc/2.1.0/ref/Tags/remoteFunction.html

答案 2 :(得分:0)

以下是该问题的替代答案。

默认情况下,Grails视图解析程序会尝试查找类似于操作名称的视图。在您的情况下,Grails正在尝试查找test.gsp,如果它存在于您的存储库中,则会呈现它。您可以使用Grails URL映射功能覆盖此行为。在那里,您将指定应为特定操作呈现哪个视图。

class UrlMappings {

    static mappings = { 
        "/$controller/$action?/$id?"{ 
            constraints { 
            // apply constraints here 
            } 
        }

    "/"(view:"/index") 
    "500"(view:'/error') 

    } 
}

有关详细信息,请访问:http://grails.org/doc/2.2.x/ref/Plug-ins/URL%20mappings.html