抱歉,我没有看到 java-noob 的标签。
我在 Spring 中使用现有的 restful api。我的任务是添加一个带有几个实用方法的新 api,每个方法都返回一个字符串。到目前为止,一切都很好。一切运作良好。
我添加了一个简单的包装器来将字符串作为对象返回,并且我能够构建/部署/测试并且我得到了我的响应,看起来像
{ id: "12345" }
如果我指定 Accept 标头 =application/xml
我得到以下异常:
org.springframework.web.HttpMediaTypeNotAcceptableException:找不到可接受的表示
这个包中的其他方法似乎可以在 xml 和 json 中序列化。我没有看到控制器库中使用了任何自定义序列化代码,我不知道它在哪里处理(或者它是否甚至与序列化有关)。有人可以帮我弄清楚从哪里开始寻找吗?
这是我的[简化]控制器:
@Controller
public class UtilController extends ControllerBase
{
@XmlRootElement(name="util_response")
public static class UtilResponse extends APIResponseBase
{
private String id;
@XmlElement(name="id")
public String getId()
{
return id;
}
public void setId(String id)
{
this.id = id;
}
}
@RequestMapping(value = "/{pid}/util/output", method = RequestMethod.GET)
@ResponseBody
public UtilResponse output(HttpServletResponse httpResponse,
@PathVariable("pid") int pid,
@RequestParam(value = "id", required=true) String id) throws Exception
{
UtilResponse utilResponse = new UtilResponse();
utilResponse.setId(id);
return utilResponse;
}
}
我也尝试更新@RequestMapping
和添加produces = "application/xml"
(是的,显然不知道这到底是做什么的),但效果为零。
说真的,我对所有这些 java 东西如何“工作”(.net dev by trade)真的很陌生,并且很想了解更多。我不知道是什么Jackson
,但我在我们的项目中没有看到对它的引用,其他一切似乎都有效,所以请不要回复说“你为什么不直接使用杰克逊?” 我也有最后期限,所以有时只是让它工作优先。