【问题标题】:Javalite - render JSON, HTML, XML for all the actionsJavalite - 为所有操作渲染 JSON、HTML、XML
【发布时间】:2017-11-03 15:27:25
【问题描述】:

当声明如下时,是否有可能获得与 Rails 控制器中相同的行为:

class ClientsController < ApplicationController
  respond_to :json, :html

  def index
    @clients = Client.all
    respond_with(@clients)
  end
end

谢谢

【问题讨论】:

    标签: javalite


    【解决方案1】:

    这是可能的,但编程模式略有不同。

    例如,如果你的 URL 以 .json 结尾,你可以在控制器中这样做:

    public void index(){
          if("json".equals(format())){
              render().noLayout().contentType("application/json");
          }
         view("books", Books.where(...));
    }
    

    这样,如果请求 URL 是:http://localhost/books,您将获得一个带有菜单和页脚的布局的 HTML 页面,但如果它是 http://localhost/books.json,那么您将没有布局。

    有关更多信息,请参阅此处的文档:http://javalite.io/view-routing

    【讨论】:

    • 非常感谢,伊戈尔!
    • 即使在返回 JSON 时,我是否应该始终拥有视图?
    • 我尝试如下:public void index(){ view("lists", List.findAll().orderBy("id")); render().contentType("application/json"); },但没有奏效。
    • 不一定,但如果您的 JSON 具有更复杂的结构,您可能希望使用视图将其分解为部分。请参阅此示例:github.com/javalite/activeweb-rest/blob/master/src/main/webapp/…
    • @Belgoros,请查看文档。你需要一个方法respond(),而不是render()
    猜你喜欢
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    相关资源
    最近更新 更多