この質問はこれに関連しています。しかし、私はまだその質問を解決していないので、私の問題を少し言い直したいと思います. バックエンド Web サービスとして Java Jersey REST API を使用しています。クライアント側は単純な Web フォームの HTML ページです。基本的に私が欲しいのは: ユーザーが Web フォームを送信し、データベースの一意の制約違反が原因でエラーが発生した場合、フォームの id フィールドと共に「ID は既に存在します! "。Web フォームは単純な form.html です。
<form action="/myapp/rest/customer/created" method="POST">
<table border="1">
<tr>
<td>Customer name:</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>Customer ID:</td>
<td><input type="text" name="id"></td>
</tr>
<tr>
<td>Customer DOB:</td>
<td><input type="text" name="dob"></td>
</tr>
</table>
<br/>
<input type="submit" value="Submit">
</form>
エラーが発生した場合、Jersey API からクライアント側にエラー情報を渡す方法は? このフォーム送信に関連付けられているサーバー側の POST 呼び出しは次のとおりです。
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Path("created")
public Response createCustomer(@FormParam("id") int id,
@FormParam("name") String name, @FormParam("dob") Date dob)
throws ServletException, IOException {
URI uri = URI.create(uriInfo.getPath());
Response r;
r = Response.created(uri).build();
try {
dbController.create(id, name, dob); //This may throw exception.
} catch (DataAccessException ex) {
//To do: How to pass the error message to the client-side UI via e.g., Ajax?
}
return r;
}