Java REST和非REST URL';s在一起不';行不通
我所有的尝试都失败了,我试图得到一个纯restful配置和至少一个非restful URL的工作示例 我以本页作为指南: 我有一个模型,Java REST和非REST URL';s在一起不';行不通,java,json,rest,struts2,struts2-rest-plugin,Java,Json,Rest,Struts2,Struts2 Rest Plugin,我所有的尝试都失败了,我试图得到一个纯restful配置和至少一个非restful URL的工作示例 我以本页作为指南: 我有一个模型,收据,带有几个测试字段 纯REST解决方案按预期工作,因此执行以下操作: 与这些结果配合良好: receive.json=>显示所有收据的列表 收据/1.json=>显示id为1的收据 但是,如果我尝试将restful与非restful URL混合(与wiki文章中告诉我的方式相同),如下所示: 它的爆炸是这样的: Struts has detecte
收据
,带有几个测试字段
纯REST解决方案按预期工作,因此执行以下操作:
与这些结果配合良好:
receive.json
=>显示所有收据的列表
收据/1.json
=>显示id为1的收据
但是,如果我尝试将restful与非restful URL混合(与wiki文章中告诉我的方式相同),如下所示:
它的爆炸是这样的:
Struts has detected an unhandled exception:
Messages:
com.immaculate.receipto.controllers.ReceiptController.execute()
File: java/lang/Class.java
Line number: 1,778
我很困惑。为什么要搜索execute()?
execute()应该是操作上存在的方法。我不是给它一个动作,我是给它一个像以前一样的控制器
我该如何解决这个问题
这是接收器控制器
:
公共类ReceiptController实现模型驱动{
私有ReceiptManager ReceiptManager=新的ReceiptManager();
私有字符串id;
私人收据模型=新收据();
私人收藏清单;
公共对象getModel(){
if(list==null){
收益模型;
}否则{
退货清单;
}
}
公共HttpHeaders创建(){
receiptManager.save(模型);
返回新的DefaultHttpHeader(“显示”);
}
公共HttpHeaders show(){
model=receiptManager.find(id);
返回新的DefaultHttpHeader(“显示”);
}
公共HttpHeaders destroy(){
型号=receiptManager.destroy(id);
返回新的DefaultHttpHeader(“显示”);
}
公共HttpHeaders索引(){
list=receiptManager.list();
返回新的DefaultHttpHeader(“显示”);
}
公共字符串getId(){
返回id;
}
公共无效集合id(字符串id){
this.id=id;
}
}
很明显我做错了什么。除了这里解释的以外,我还需要知道什么吗
还有,我怎么读这个
这是否意味着以
/rest
开头的所有内容都将映射到我的纯restful控制器,该控制器将映射到我的收据,而没有/rest
前缀的任何内容都将映射到默认struts映射?还是我在这里完全走错了方向?基于前缀的动作映射器代理查找到由
这意味着在最后一个斜杠/
之前的URL中包含/rest
的所有URL都映射到rest映射器,其他URL映射到默认映射器。如果您有一个收据
控制器,那么应该使用值“/receipt:rest,:struts”
参考文献:
- 我也有同样的错误,我通过添加
<package name="api" namespace="/api" extends="rest-default">
<action name="users/*" class="com.aurum.struts.rest.UserController">
<param name="id">{1}</param>
</action>
</package>
谢谢,这一点非常清楚。我在哪里可以找到关于这个主题的更多文档?我已经更新了Struts网站的链接。不客气。