问题标签 [struts2-rest-plugin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
485 浏览

java - 我可以在 Struts 2 中映射一个返回 Object 的操作方法吗

我使用 Struts2 将动作映射到返回的方法String。我可以使用其他类型吗?可以使用哪些类型?

我发现使用 REST 插件的代码

它表明它映射到show返回的方法HttpHeaders。它不是一个String. 这个怎么运作?

0 投票
1 回答
369 浏览

java - 使用 Struts 2 REST 插件的操作未映射错误

我编写了一个简单的代码来将 rest 与 Struts 2.3.24 集成

我有我的 Struts XML:

我的控制器类是:

每当我尝试访问该服务时,它都会显示未找到操作未映射异常。

请让我知道我还需要做什么才能使代码正常工作。

0 投票
1 回答
905 浏览

java - Struts2 Rest Mapper 接管非 Rest Json 结果

Struts 版本: 2.5.2

POM 中的 Struts 依赖项

Struts xml

动作类

我正在使用 DataTables JS 库并尝试为网格编写操作。我有一个 api 已经为我创建了 json,我只需要将它流回来。我创建了一个自定义结果来处理这个问题,但在操作中映射的结果永远不会运行。无论结果类型如何,REST 映射器都会在看到客户端请求了 application/json 后立即尝试处理它。我在配置中使用了前缀映射,让所有 url 都使用 /grid 绕过其余映射器。它似乎以某种能力工作,因为它运行正确的拦截器堆栈并使用 @Action 注释信息来映射 url。但是,指定的结果没有运行,而是由其余映射器根据我收到的堆栈跟踪提供。对于 /grid 命名空间中的任何操作,我想完全绕过其余映射器。我是否在配置中做错了什么仍然导致休息参与对这些操作的请求?

堆栈跟踪

0 投票
1 回答
386 浏览

java - 命名空间(和操作)是否应该以斜杠开头?

我们正在开发一个基于 Struts 2 的 Web 应用程序。

请让我知道 Strust 2 应用程序中哪个是正确的(标准)

很长的故事:

要获取我们始终在下面使用的操作 url

我们尝试为我们的应用程序添加休息支持,并使我们的应用程序支持休息和非休息操作,与REST 和非 RESTful URL 的共同配置中提到的相同

还有Struts2 REST 和 Non-REST action 一起

似乎<s:url var="url" action="foo" namespace="bar" />总是映射到默认操作,而<s:url var="url" action="/foo" namespace="/bar" />工作正常。

它是类中的错误org.apache.struts2.dispatcher.mapper.PrefixBasedActionMapper还是动作和命名空间应该总是有斜线?

0 投票
2 回答
2151 浏览

java - 在 Struts2 RESTful 插件 POST 请求中返回响应

我已经从这里获取信息实现了 Struts2 REST API

Struts2 休息插件

有没有办法在 Struts2 的 restful 插件中返回自定义响应。我做了所有必要的改变,比如

这个问题得到。 我仍然收到此错误

如果我不添加上述行,我仍然会得到相同的响应。

这是我提供的操作struts.xml

这服务于所有请求GET, POST, PUT, UPDATE

将 post 方法的返回类型从 HttpHeader 更改为 String 后,我仍然遇到相同的错误

这是我为 POST 编写的代码:

这是返回类型的 POST 请求方法String

如果我发送对 xml 或 json 的请求,我得到了完美的响应,我确实得到了基于扩展的 xml 和 json。像 http://localhost:8080/restdemoapplication/restdemo.xmlhttp://localhost:8080/restdemoapplication/restdemo.json

对于 POST 请求,我会发布请求,例如 在此处输入图像描述

你可以看到我得到的回应。我为post写的方法上面写着name create。我在正文中确实有数据,并且我确实在 create 方法中完美地获取了数据。

现在在帖子中,正如我在多个示例中看到的那样

struts-rest , stuts2-rest-sample , struts2-rest-shopping-list

我不想像这些应用程序那样返回对发布请求的响应。我想返回我自己的响应,它将是一个状态码和这样的消息

经过一些调试后,我发现DefaultContentTypeHandlerManager在 struts2-rest-plugin 中考虑xhtml中将其视为默认模板。虽然它应该是 XML 或 JSON。

我想回来

在接受 POST 请求时使用 XML 或 JSON 格式。

(这是应用程序同时接受非静态请求和静态请求。我可以将 xml 或 json 作为默认模板,但我不想要,因为它会影响非静态请求。)

0 投票
1 回答
1045 浏览

java - ConfigurationException:不允许使用 Struts 2 和 REST 插件的方法发送操作消息

我正在使用 Struts 2.5.14.1 和 Struts REST 插件。

除了自定义方法外,一切似乎都运行良好。

index()show()其他默认方法有效。

但是当我给出一些不同的自定义方法时,它似乎不起作用并引发错误。

0 投票
1 回答
167 浏览

rest - 通过 Struts2 Rest 流式传输文件

我需要使用 Struts2 REST 流式传输文件。尽管流式传输正常,但 Web 服务器会引发错误:

异常处理结果。:java.io.IOException: UT010029: Stream is closed

这是动作代码:

网络服务器日志:

0 投票
1 回答
216 浏览

ember.js - 我需要在 ember.js 适配器中自定义序列化程序

发送 PUT 请求时,我的服务器需要以下格式的 json。我的服务器是一个使用 struts2 rest 插件设计的 rest api。

我尝试忽略后端的属性,但这只是忽略了整个 json 并将空值提交给 sql-server。我需要重写或自定义 ember.js 的序列化,但我不知道如何。

0 投票
1 回答
23 浏览

rest - 发生异常时需要发送 HTTP-error-500

我设计了一个 RESTful 后端,使用struts2-rest-plugin. 我的前端是Ember.js CRUD应用程序。

当我尝试创建具有重复 ID 的新记录时,我的服务器显示异常。

如何将它作为 HTTP-error-code-500 发送到我的 ember.js 应用程序?

0 投票
1 回答
470 浏览

struts2 - struts2-rest-plugin 失败:“org.apache.struts2.dispatcher.Dispatcher - 找不到操作或结果”

我正在使用 struts2-rest-plugin 编写一个 REST 服务器。我正在使用 SoapUI 和 Postman 测试 REST 调用。我在这里关注示例代码:

https://cwiki.apache.org/confluence/display/WW/REST+Plugin

我的 REST 要求controller.index())并且controllers.create()工作正常。

但是虽然controller.update()成功调用了控制器并更新了记录:

...它在“返回”时失败,出现以下错误:

这是控制器:

...和struts.xml:

在我添加之前没有任何效果<package name="contacts">。我尝试了几种不同的添加<action><result>,但无济于事。

示例网址:

  • GET Endpoint= http://localhost:8080, Resource= /StrutsContactsApp/contacts.json: 好的
  • POST Endpoint= http://localhost:8080, Resource= /StrutsContactsApp/contacts.json + JSON body: 好的
  • PUT Endpoint= http://localhost:8080, Resource= http://localhost:8080, + JSON body

    API调用成功,浏览器获取“HTTP 404”;日志显示“没有为操作 com.example.contactsapp.controllers.ContactsController 和结果更新定义结果”

问:关于解决错误和让“update()”与 struts2-rest-plugin 一起工作的任何建议?

PS:我在“update()”、“show()”和“destroy()”这三个方面都遇到了类似的问题。每个都期望一个 id(我可以在 Eclipse 调试器中看到它被正确传递)。

还:

struts-rest-plugin 支持像http://localhost:8080/myapp/contacts.json(for JSON) 和http://localhost:8080/myapp/contacts.xml(for XML) 这样的 URL。我不确定“update()”是否需要contacts.json/id,或者只是contacts/id。都不工作:(