2016-07-30 3 views
1

レスポンスコードをRESTコントロールエレメントに設定する方法がわかりません。ここレスポンスコードをレストコントロールに設定する

enter image description here

REST制御コードです。

<xe:restService id="restProfile" pathInfo="profile"> 
    <xe:this.service> 
     <xe:customRestService 
      doGet="#{javascript:REST_PROFILE.doGet()}" 
      contentType="application/json" 
      doPost="#{javascript:REST_PROFILE.doPost(reqVar)}" 
      requestContentType="application/json" requestVar="reqVar"> 
     </xe:customRestService> 
    </xe:this.service> 
</xe:restService> 

場合によってはコード404を返す必要があり、それを行う方法がわかりません。

誰でもSSJSを使用してそれを行う方法を知っていますか?

ドミノのバージョンは、あなたがdoGetメソッドとdoPostメソッドとステータス404を返すことはできません9.0.1

答えて

4

です。応答プロパティのステータスは、customRestServiceによって管理されます。 SSJSコードはJSONデータのみを返すことができます。
あなたはしかし

{ 
    "status": "error", 
    "error-message": "something not found" 
} 

のような独自のJSONコンテンツを定義し、エラーをこのように扱うかもしれません。

代わりに、customRestServiceのserviceBeanを使用することもできます。そこresponse.setStatus(status)

 <xe:customRestService 
      contentType="application/json" 
      requestContentType="application/json" 
      serviceBean="de.leonso.demo.RestService"> 
     </xe:customRestService> 

と設定し、戻りコード:

public class RestService extends CustomServiceBean { 
    @Override 
    public void renderService(CustomService service, RestServiceEngine engine) throws ServiceException { 
     try { 
      HttpServletRequest request = engine.getHttpRequest(); 
      HttpServletResponse response = engine.getHttpResponse(); 
      response.setHeader("Content-Type", "application/json; charset=UTF-8"); 
      response.setContentType("application/json"); 
      response.setHeader("Cache-Control", "no-cache"); 
      response.setCharacterEncoding("utf-8"); 

      String method = request.getMethod(); 
      int status = 200; 
      if (method.equals("GET")) { 
       status = ... 
      } else { 
       ... 
      } 
      response.setStatus(status); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      throw new RuntimeException(e); 
     } 
    } 
+0

おかげ@Knut。 私は疑問に思ったように、それを答えとして受け入れます。 –

関連する問題