小编nat*_*tiz的帖子

JAXB/Jersey - JSONObject作为XmlElement

我正在使用Jersey(1.9.1)并将JAXB用于我的对象,并尝试添加一个简单的JSON对象字段,理想情况下是Jackson的JsonNode类型,但我也可以使用jettison的JSONObject(甚至是GSON的JsonObject)/JsonElement)

原因是因为我想允许发送'自由格式'json(作为我们示例中的obj元素),以及同一对象上的其他元素(使用JAXB注释)

我的目标:

import org.codehaus.jettison.json.JSONObject;

@XmlRootElement(name="moo")
@XmlAccessorType(XmlAccessType.FIELD)

public class Moo {

    @XmlElement
    JSONObject obj;

    ...
}
Run Code Online (Sandbox Code Playgroud)

我的资源:

@Path("/moo")
@POST
@Produces({MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON})
public Response postMsg(Moo e) {
    System.out.println(e);

    return Response.status(200).entity(e).build();
}
Run Code Online (Sandbox Code Playgroud)

有效载荷:

{"obj": {"my": "custom", "object": 1, "here": [1, 2, 3] } }
Run Code Online (Sandbox Code Playgroud)

使用上述执行POST请求时 - obj是空的JSONObject.同样的事情发生了,当我试着用杰克逊JsonNode和GSON的JsonElement/ JsonObject.

但是,当我JSONObject用作方法的arg时,它能够解析它

@Path("/moo")
@POST
@Produces({MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON})
public Response postMsg(JSONObject e) {
    System.out.println(e);

    return Response.status(200).entity(e).build();
}
Run Code Online (Sandbox Code Playgroud)

我认为这是因为Jersey使用自己com.sun.jersey.json.impl.provider.entity.JSONObjectProvider的编组,而JAXB使用自己的marshller.

有没有办法解决这个问题,同时仍然使用JAXB的注释(对于其他领域)?我尝试XmlAdapter使用自定义(使用@XmlJavaTypeAdapter注释)而没有任何成功(因为我得到的对象ValueType是一个DOM元素) …

java json jaxb jersey

8
推荐指数
1
解决办法
1307
查看次数

CS0012:类型'System.Data.Linq.DataContext'在未引用的程序集中定义

Helllo,我收到此错误:

CS0246:找不到类型或命名空间名称'DataClasses1DataContext'(您是否缺少using指令或程序集引用?)

对于此.aspx文件:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class WebApplication1_admin_Places : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        DataClasses1DataContext db = new DataClasses1DataContext();
        var query = (from m in db.Places orderby m.Name select m);
        PlacesList.DataSource = query;
        PlacesList.DataBind();
    }
}
Run Code Online (Sandbox Code Playgroud)

事情是,在/文件夹我可以访问数据库,但在/ admin文件夹我得到这个错误.

我究竟做错了什么?

编辑

CS0012:类型'System.Data.Linq.DataContext'在未引用的程序集中定义.您必须添加对程序集'System.Data.Linq,Version = 3.5.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的引用.

那是什么意思?

.net database asp.net linq-to-sql

6
推荐指数
2
解决办法
1万
查看次数

ASP.NET表单 - 表单名称\ id更改为aspnetForm

我有这个代码:

<form Name="AddPlace" ID="AddPlace" action="AddPlace.aspx" class="niceform" method="post" runat="server">
Run Code Online (Sandbox Code Playgroud)

当我尝试执行代码时,我得到了这个:

<form name="aspnetForm" method="post" action="AddPlace.aspx" id="aspnetForm" class="niceform">
Run Code Online (Sandbox Code Playgroud)

怎么变了?

forms asp.net submitchanges

6
推荐指数
2
解决办法
7895
查看次数

使用JavaScript同时提交2个表单

我正在尝试使用javascript同时提交2个表单.但是,似乎只有第二次提交被打开,而不是第一次提交.

代码很简单:

<html>
<body>
<form id="report_0" method="POST" target="_blank" action="https://www.google.com">
   <input type="hidden" name="test1" value="1">
   <input type="submit" value="report_0">
</form>
<form id="report_1" method="POST" target="_blank" action="https://www.google.com">
   <input type="hidden" name="test2" value="2">
   <input type="submit" value="report_1">
</form>
<script>
    document.getElementById("report_0").submit();
    document.getElementById("report_1").submit();
    </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

不能使用ajax或等价物,因为它必须是'本机'POST(由于CORS问题)

我在某处读到你不能同时提交两份表格,这对我来说没有意义.我已经尝试将目标从"_blank"更改为"form1"和"form2"但仍然没有.

非常感谢您的帮助:)

编辑

这是我实际使用的:

for (....) {
       var form = document.createElement("form");
       form.setAttribute("name", "report_"+i);
       form.setAttribute("method", "POST");
       form.setAttribute("target", "_blank");
       form.setAttribute("action", action);

       for (var key in parms) {
           var field = document.createElement("input");
           field.setAttribute("type", "hidden");
           field.setAttribute("name", key);
           field.setAttribute("value", parms[key]);
           form.appendChild(field);
       }
       console.log(form);
       document.body.appendChild(form);
       form.submit();
       document.body.removeChild(form); …
Run Code Online (Sandbox Code Playgroud)

html javascript forms

5
推荐指数
1
解决办法
7533
查看次数

CSS:怎么来html,身高:100%超过100%?

嘿,我试图做一个底部粘性页脚链接测试,但它保持超过100%意味着它滚动了一点点..

所以我制作了一个简单的HTML代码,没有任何添加,但仍然超过100%,请看这里:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="he" lang="he" dir="rtl" id="bangler">
    <head>
        <title>my title</title>
        <style type="text/css">
        html, body, #wrapper { height: 100%; }
        body > #wrapper { height: auto; min-height: 100%; }
        </style>
    </head>
    <body>
        <div id="wrapper">aa</div>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

问题是,它滚动了一点点,然后100%意味着大约5-10px ...这在IE和Firefox上都很奇怪!

提前致谢 !

html css height footer sticky-footer

0
推荐指数
1
解决办法
2418
查看次数

Google电子表格:比较2个阵列

我想帮助您提出一个比较2个阵列的公式:

Array A:
444444
333333
222222

Array B
111111111
123124123
124124111
444444

我想比较2个数组并返回两个数组中存在多少个值.所以对于出现在顶部的这两个数组,它应该读为1,因为两个数组中只存在'444444'.

我之所以谈论数组而不是单元格/列/行是因为我使用= QUERY()函数来获取数组.

excel google-sheets

0
推荐指数
1
解决办法
3245
查看次数