最近由于项目需要,用到了grails,这玩意确实好用,生产率高有类型python的速度与简洁。仅第一印象,用的还不深入,说的不对请轻拍。

遇到的几个问题:

1. groovy远程调试

玩Java的应该都知道在eclipse中有个java remote debug的功能,可以调试java拉起的程序,含jar,含web。

话说业界某公司做IDE,拖拽图元出来的代码,都能对图元进行远程调试,虽然那功能做的不是很漂亮,但也不错。

不多了,言归正传。

一个语言如果不能远程调试,那多痛苦啊,尤其是用在web后端的语言。因为一般上点规模的不是玩具的系统都会涉及到很多其他模块,在本机搭环境,会痛苦的一沓。何况很多系统的模块只支持Linux系统

找了好久未能解决。

stackoverflow有一哥们在问,但是也没具体结果

貌似结论就是不支持

How to debug Groovy code via the remote Java application debugging in Eclipse

后来,后来,终于在群里,—飞/aiq警 这个哥们告诉我上IntelliJ IDEA 这个IDE

我带着半信半疑的态度用了把,果然行。

再次谢谢 —飞/aiq警 这个哥们。

说下方法(我这边打出来war是放在tomcat容器中的)

1. 修改tomcat的启动脚本增加dtsocket配置已经打开远程debug的参数

Shell
 
export JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8333,server=y,suspend=n $JAVA_OPTS"
1
export JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8333,server=y,suspend=n $JAVA_OPTS"

2. 重启tomcat 确认8333端口已经监听

3.  配置IntelliJ, 与eclipse的远程调试类似,大同小异,只是菜单在地方不一样,快捷键不一样

我新建了一个远程debug配置

如下图1

然后启动这个debug 就可以连接到远程的server上了

然后run debug 刚才的那个远程debug就可以了

试下断点,果然行

2. 关于请求contriller中的action让其返回xml 出现404问题

在很多场景下,比如做api的需求,webservice的需求,都需要返回xml或者json格式的数据。

但是我按官网的文档区做,怎么做怎么就是404.

说我那个action对应的view不在,汗,我把那个view放上去,他就显示view中的内容,也不显示action中组装的xml的内容。

没招,试了很久,翻阅若干文档,国内的,国外的,E文不够好,看的不是很明白。

终于,终于,发现一个哥们说的,试了下,果然ok,

请猛戳这里REST Service XML Output in Grails via Content Negotiation

关键点在这里:

if you call http://localhost:8080/myapp/blah/list.xml or http://localhost:8080/myapp/blah/list?format=xml, you will get an XML result

其实,看到这里,这个问题,也不复杂。但是我为什么会被绕进去呢,嗯,(⊙_⊙),人品问题?好吧。

我解释下,这玩意按官网的说法,你要想响应回xml格式的内容,只需要

JavaScript
 
 
 
1
2
3
4
5
6
7
8
9
10
      withFormat {
        xml {
          render(contentType:"text/xml") {
            response() {
              returncode("FAILED")
              message("Could not find conference.")
            }
          }
        }
      }

就可以了。

但是我的为什么出问题呢

原因是我测试的时候测试页面用的是post请求(当然我已经在urlMappings中配置上post对应的action

“/commonFileShare/preBatchDownload”(controller:”commonFileShare”) {
action = [POST:'preBatchDownload', GET:'preBatchDownload']
}

)

如果用get请求的话就是ok

后来我post的时候

http://192.168.1.148:8080/xxx/commonFileShare/preBatchDownload?format=xml

也是就说你用post方式请求的时候,后面加?format=xml

就可以啦。

–EOF–

http://www.simonme.org/?p=169

grails的controller和action那点事---远程调试groovy代码的更多相关文章

  1. 实现MVC自定义过滤器,自定义Area过滤器,自定义Controller,Action甚至是ViewData过滤器

    MVC开发中几种以AOP方式实现的Filters是非常好用的,默认情况下,我们通过App_Start中的FilterConfig来实现的过滤器注册是全局的,也就是整个应用程序都会使用的,针对单独的Fi ...

  2. 解读ASP.NET 5 & MVC6系列(10):Controller与Action

    我们知道在MVC5和之前的版本,两个框架的生命周期是不一样的,在新版MVC6中,MVC Controller/Web API Controller已经合二为一了,本章我们主要讲解Controller和 ...

  3. [ASP.NET MVC 小牛之路]09 - Controller 和 Action (1)

    我们知道,在 MVC 中每个请求都会提交到 Controller 进行处理.Controller 是和请求密切相关的,它包含了对请求的逻辑处理,能对 Model 进行操作并选择 View 呈现给用户, ...

  4. [ASP.NET MVC 小牛之路]10 - Controller 和 Action (2)

    继上一篇文章之后,本文将介绍 Controller 和 Action 的一些较高级特性,包括 Controller Factory.Action Invoker 和异步 Controller 等内容. ...

  5. 在ASP.NET MVC 中获取当前URL、controller、action

    一.URL的获取很简单,ASP.NET通用: [1]获取 完整url (协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [2]获取 虚拟 ...

  6. Asp.Net_Mvc_获取当前Url、Controller、Action

    一.URL的获取很简单,ASP.NET通用: [1]获取 完整url (协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [2]获取 虚拟 ...

  7. 004. Asp.Net Routing与MVC 之二: 请求如何激活Controller和Action

    上篇讲到 请求到达 MvcRouteHandler ,并且透过 IRouteHandler.GetHttpHandler 获取到了真正的处理程序 MvcHandler 这次我们看看,MvcHandle ...

  8. [译] ASP.NET MVC 6 attribute routing – the [controller] and [action] tokens

    原文:http://www.strathweb.com/2015/01/asp-net-mvc-6-attribute-routing-controller-action-tokens/ 当在Web ...

  9. Yii里获取当前controller和action的id

    Yii里获取当前controller和action的id 在控制器里$name = $this->getId();  // controller$name = $action->id;  ...

随机推荐

  1. Java开源运行分析工具(转)

      FProfiler  FProfiler是一个非常快的Java profiler.它利用BCEL和log4j来记录每个方法从开始到结尾的日记.FProfiler可以用来在你的应用程序,Servle ...

  2. JSP:JAVA Bean在JSP中的运用

    目录结构,如图: index.jsp <%@ page language="java" import="java.util.*" pageEncoding ...

  3. Makefile自动生成工具-----autotools的使用(详细)

    相信每个学习Linux的人都知道Makefile,这是一个很有用的东西,但是编写它是比较复杂,今天介绍一个它的自动生成工具,autotools的使用.很多GNULinux的的软件都是用它生成Makef ...

  4. LintCode 二叉树的层次遍历 II

    中等 二叉树的层次遍历 II 查看执行结果 42% 通过 给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历) 您在真实的面试中是否遇到过这个 ...

  5. Python中列表的常用操作

    只整理重要常用的操作: append():尾部追加元素,参数只能为一个. extend():用列表扩展列表,参数为列表. insert():在指定位置插入元素,第一个参数为插入位置,第二个为参数为插入 ...

  6. MSSQL - 用GUID值来完成数据表行标识

    地址:http://www.cnblogs.com/huangfr/archive/2012/03/28/2420780.html [Guid] [uniqueidentifier] NOT NULL ...

  7. RobotFramework 自定义Library

    RobotFramework 主要使用Python,这里简单自定义Library,以扩充RobotFramework的功能 新建一个python类,自定义需要的方法 例如: 保存成TestLibrar ...

  8. Python easy_insatll 安装包

    Python 使用 easy_instal安装第三方扩展包更容易 easy insatll 下载地址 https://pypi.python.org/pypi/setuptools/ windows ...

  9. linux进程解析--进程的创建

    通常我们在代码中调用fork()来创建一个进程或者调用pthread_create()来创建一个线程,创建一个进程需要为其分配内存资源,文件资源,时间片资源等,在这里来描述一下linux进程的创建过程 ...

  10. Problem D: Flip Five

    大致题意:3 * 3的黑白格,在翻转的时候会本身和四周的都翻转,问最小翻转几次变成全部是白色解题思路:把3 * 3 = 9 个格子进行全排列,然后穷举然后找翻转的最小次数 #include <i ...