我想要實現這樣的:春天 - SessionAttribute問題
@Controller
@SessionAttributes("promotion")
class PromotionController {
@RequestMapping("showPromo")
void showPromotionInfo(
@RequestParam("promId") String promotionId,
@ModelAttribute Promotion promotion, Errors errors
) {
promotion = Promotions.get(promotionId);
if (promotion == null || promotion.validates() == false) {
errors.reject("promotion.invalid");
}
return "prom";
}
}
的代碼是無效的,不會工作,並有一些壞的錯誤,但我不知道怎麼寫的更好。
當用戶訪問URL「showPromo?promId = 15」時,控制器應驗證促銷是否有效(過期/不存在/等)。如果它是有效的 - 它應該顯示它的信息並將促銷保存到模型和會話中。如果不是 - 它應該顯示一些關於促銷無效的錯誤。
問題是,我需要在會話中保存促銷(針對多個請求),並且不想使用直接會話管理。 Spring現在有可能嗎?或者我做錯了什麼?
您能否使用Spring 3爲我的問題提供最佳解決方案?
在此先感謝。
補充:
好吧,我想我會寫下來的問題點:當在會議上沒有對象,所以不能用@ModelAttribute拋出一個錯誤,如綁定
- 「在會話中找不到對象」。並且在任何地方都沒有「可選」參數。
- 我無法在參數中使用@ModelAttribute,因爲我正在覆蓋該促銷對象。正確的方法應該是model.addAttribute(「促銷」,促銷)。但我也需要有一種方法來提供錯誤,而且我看不到使用model.addAttribute提供它們的方法。
非常感謝。這正是我想知道的。然而,這段代碼看起來非常令人沮喪(我的意思是基於字符串的屬性名稱)......可以有更好的方法來做到這一點嗎? – bezmax 2010-06-15 12:23:38