Java REST和非REST URL';s在一起不';行不通

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

我所有的尝试都失败了,我试图得到一个纯restful配置和至少一个非restful URL的工作示例

我以本页作为指南:

我有一个模型,
收据
,带有几个测试字段

纯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网站的链接。不客气。