当前位置: 首页 > 面试题库 >

为什么我在本地系统上可以正常工作的同时继续在服务器上获取对象引用

郑功
2023-03-14
问题内容

我的类对象没有转换成json,我认为它返回对象引用,尽管在本地执行它时,它执行得很好。

这是代码

private def static sql

private static List<ProductAlertsResponse> executeSelection(String query)
{
    List<ProductAlertsResponse> prodAlerts=new ArrayList<ProductAlertsResponse>()
    sql.eachRow(query)
    {
        ProductAlertsResponse prodAlert=new ProductAlertsResponse((String)it.id,(String)it.name,(String)it.description,(String)it.active,(String)it.release_date)
        prodAlerts.add(prodAlert)
    }
    return prodAlerts
}

static main(args) {

    AppProperties.load()
    sql = Sql.newInstance("jdbc:oracle:thin:@"+AppProperties.get("hostname")+":"+AppProperties.get("port")+":"+AppProperties.get("service"), AppProperties.get("username"), AppProperties.get("password"),"oracle.jdbc.OracleDriver")

    List<ProductAlertsResponse> sqlResult=executeSelection("select ID,NAME,DESCRIPTION,ACTIVE,RELEASE_DATE from productinfo where ACTIVE='A'")

    def json = new groovy.json.JsonBuilder([response: sqlResult])

    String response=json.toPrettyString()
    println "$response"
}

这给了我以下回复

{
"response": [
    {
        "active": "A",
        "release_date": "2011-09-23 00:00:00.0",
        "id": "1",
        "description": "Test",
        "name": "ABC7"
    },
    {
        "active": "A",
        "release_date": "2012-01-19 00:00:00.0",
        "id": "5",
        "description": "Test1",
        "name": "ABC3"
    },
    {
        "active": "A",
        "release_date": "2011-09-23 00:00:00.0",
        "id": "3",
        "description": "Test",
        "name": "ABC1"
    },
    {
        "active": "A",
        "release_date": "2012-01-19 00:00:00.0",
        "id": "6",
        "description": "Test2",
        "name": "ABC2"
    }
]
}

在我的服务器上运行它(struts和commons链)时,它给我以下json响应(在删除静态后)

{
"response": [
    "com.est.dxclient.common.ProductAlertsResponse@67f797",
    "com.est.dxclient.common.ProductAlertsResponse@1e8f2a0",
    "com.est.dxclient.common.ProductAlertsResponse@c3d9ac",
    "com.est.dxclient.common.ProductAlertsResponse@7d8bb"
]
}

注意: 我正在使用groovy 1.8.0

更新 添加服务器端代码

My server side

class GetProductAlertsResponse implements Command {
//Command is import org.apache.commons.chain.Command
    private def sql

    @Override
    public boolean execute(Context ctx) throws Exception 
    {
        AppProperties.load()
        sql = Sql.newInstance("jdbc:oracle:thin:@"+AppProperties.get("hostname")+":"+AppProperties.get("port")+":"+AppProperties.get("service"), AppProperties.get("username"), AppProperties.get("password"),"oracle.jdbc.OracleDriver")

        List<ProductAlertsResponse> sqlResult=executeSelection("select ID,NAME,DESCRIPTION,ACTIVE,RELEASE_DATE from productinfo where ACTIVE='A'")

        def json = new groovy.json.JsonBuilder([response: sqlResult])

        /*I am trying to debug the code here*/
        println sqlResult.size()

        sqlResult.each{
            println it.getName()
        }

        String response=json.toPrettyString()

        println "Inside commands $response"
        ctx.put(CSMContextParams.response,response)
        return false;

    }
}

在控制台上打印

4
ABC7
ABC3
ABC1
ABC2
Inside commands [
    "com.est.dxclient.common.ProductAlertsResponse@a63599",
    "com.est.dxclient.common.ProductAlertsResponse@156f14c",
    "com.est.dxclient.common.ProductAlertsResponse@9ba632",
    "com.est.dxclient.common.ProductAlertsResponse@bc5245"
]

问题答案:

这个答案可能会有所帮助-GrailsJSONBuilder。

也许您的服务器代码使用了不同版本的Grails,或者在本地和服务器环境之间Grails的设置不同。



 类似资料:
  • 问题内容: 我捆绑了一个项目,效果很好。但是,当在路由/ about上单击“刷新”时,它会显示在此服务器上找不到所请求的URL / about。但是,当我在本地主机上从Web服务器上执行此操作时,在刷新和前进/后退按钮上都可以正常工作。我在我的客户端路由中使用react-router。 这是客户端路由,但我对此表示怀疑 我的路线就在那里: 我认为我破坏了APACHE: kkotwal.me.con

  • 我试过这里发布的其他解决方案,但没有任何效果。。 我有下面的代码。htaccess文件。 我收到一封电子邮件,通过点击url,我可以访问注册表。php 我开始登记表格。比如: 有人知道为什么这在本地主机上有效,而在远程服务器上无效吗?

  • 问题内容: 我正在编写一个脚本,该脚本应该在一堆服务器周围运行,并从其中选择一堆数据,包括本地服务器。选择所需数据的SQL非常复杂,因此我正在编写临时视图,并使用OPENQUERY语句获取数据,因此最终我最终循环了如下语句: 但是,我听说在本地服务器上使用OPENQUERY是一种皱眉。有人能详细说明为什么吗? 问题答案: 尽管查询可能返回多个结果集,但OPENQUERY仅返回第一个结果集。 OPE

  • 我一直在努力从我的ubuntu服务器发送邮件。奇怪的是,它在我的mac上的本地tomcat实例上运行得非常好。 以下是我的实现: 让我恼火的是,javamail的输出日志在我的服务器和本地是一样的,而且没有错误: 到目前为止我所做的一切 > 检查我的垃圾邮件(比如一千次,以防万一... 尝试了其他端口,如465和25- 使用iptable打开587端口 iptables -A 输出 -p tcp

  • 因此,我正在运行一个脚本,该脚本调用: 在ubuntu上运行时似乎工作良好,但当我使用Git Bash在Windows上运行时,会出现以下错误:

  • 我遇到了应用引擎上servlet映射的问题。 详细信息 使用我的web.xml配置文件,我将URL模式“/i”映射到WAR路径根目录上的info.html。 当我在本地运行它并访问url localhost:8888/I时,web服务器会正确地重定向到该信息。html网站。但当我推到应用引擎并尝试访问www.mysite时。com/i收到404错误:未找到 问题1。为什么我的服务器映射在本地工作,