リクエストのすべての情報、ユーザ、フォームの選択などを格納する、メインオブジェクトのリクエストと呼ばれるオブジェクトがあります。異なるフォームの間に?各.GETでリクエストオブジェクトを設定し、各.POSTに渡される唯一の情報は.GETページのフォームにあるものです。だから私は、このようなSpring内のコントローラ間でオブジェクトデータを持続させる
<form:input path='requestId' style='display:none' />
<form:input path='currentUserId' style='display:none' />
<form:input path="step" style='display:none' />
として隠しフィールドを持っている必要があり、各ページに、私はこれらのフィールドを必要とし、また、要求のフィールドの残りの部分を持っていると思います私のオブジェクトの各フィールドごとにそれを繰り返さなくても、フォーム上に存在しないオブジェクトです。
@RequestMapping(value = "/review", method = RequestMethod.GET)
public ModelAndView showCorReview(@RequestParam(value = "requestId") String requestId,
@CookieValue(value = "EMP_ID", defaultValue = "168") int userId)
{
Request request = requestManager.getRequestById(Integer.parseInt(requestId));
request.setCurrentUserId(userId);
String pageTitle = "2.1: Initiate New Service Request -- (Review)";
ModelAndView mav = new ModelAndView();
mav.setViewName("newRequest/review");
mav.addObject("title", pageTitle);
mav.addObject("request", request);
mav.addObject("cpm", userManager.getUserById(request.getCpm()).getName());
return mav;
}
@RequestMapping(value = "/review", method = RequestMethod.POST)
public String saveReview(Request request, @RequestParam(value = "commentData", required = false) String[] additionalComments)
{
if (additionalComments != null)
commentLogManager.addCommentLog(additionalComments, request);
if (request.getRejectReason() == "")
{
request.setCpm(admin.getCPM(request.getContract()).getId());
request.setCor(admin.getCOR(request.getContract()).getId());
requestManager.updateRequest(request);
}
else
{
if (request.getSubmitType().equals("return"))
{
request.setNextStep(1);
requestManager.moveRequestToStep(request);
}
}
return worksheetUrl + request.getId();
}
Alternatately私も.POSTに Request request = requestManager.getRequestById(Integer.parseInt(requestId))
はその後、すべてのフォームフィールドにセッターを使用しないこともできますが、再び、私は実際に明示することをを呼び出すことなく、それ自身の上で存続するためにデータを好むだろう。
隠されたフィールドについて聞いたことがありますか?また、データベースとHTTPセッションの使用についてはどうですか? –
私は隠しフィールドを使用していますが、リクエストオブジェクトに30以上のフィールドがあり、指定されたフォーム上に使用されているものが一部しかない場合、各ページに20個の追加の隠しフィールドを追加したくありません。 もう一度、私はデータベースから取得できると述べましたが、すべての投稿でデータベースにヒットしたくはありません。リクエストオブジェクトのデータを連続して渡すことなくdb – Tim
display:noneで入力を隠すことは隠しフィールドではありません。 htmlには真の隠しフィールドである 'input type =" hidden "があります。春はそれがここにあります:http://static.springsource.org/spring/docs/3.1.x/reference/html/spring-form.tld.html#spring-form.tld.hiddenあなたの最善の策が行くように聞こえますセッションを使用しています。 – digitaljoel