我正在開發Spring MVC3應用程序,並且我有一個要求來啓用/禁用頁面中的鏈接,並在鏈接禁用時提供鏈接上的工具提示(某種幫助)。該鏈接可以在許多情況下被禁用,我想知道應該受到影響的各個層次。Spring MVC 3設計
例如,考慮一個管理員用戶試圖續訂訂閱的測試用例。我應該能夠續約,如果
- 我是一個管理員用戶
- 我的訂閱在未來30天內
- 我不更新自己的訂閱結束。
在我的情況下,我有控制器,調用一個服務,確定用戶是否有資格續約。如果沒有資格續訂,請致電另一個提供幫助文字的服務。然後,視圖(JSP)啓用/禁用鏈接,並顯示基於modelAttribute的幫助文本。
我的問題是..
如何避免兩次調用服務(這似乎再次調用同樣的方法)。我可以添加屬性到用戶模型來保存幫助文本,但我不確定幫助文本是否應該在模型中
如何從服務中的屬性文件中取代硬編碼更新幫助文本。我在驗證器中使用messages.properties,但我不確定如何在@service中使用它。
我應該只是在視圖(JSP)中硬編碼更新幫助,而不是過度設計它?
我有下面的一些代碼片段進一步明確,對查詢..
public class UserController {
@RequestMapping(value="/viewUserDetails", method=RequestMethod.GET)
public String userDetails() {
if(userService.isEligibleToRenew()) {
user.setEligibleToRenew(true);
model.addAttribute("renewalHelp", userService.getRenewalHelp())
}
}
}
@Service
public class UserService {
public boolean isEligibleToRenew (User user) {
if (isAdminUser() &&
isSubscriptionEndingin30days() &&
!isRenewingOwnSubscription()) {
return true;
}
return false;
}
public String renewalHelp(User user) {
if (!isAdminUser()) {
return "You must be an admin to renew your subscription";
} else if (!isSubscriptionEndingin30days()) {
return "Your subscription is not expiring in the next 30 days. You cannot renew now";
} else if (isRenewingOwnSubscription()) {
return "You cannot renew your own subscription";
}
}
}
因此,如果有多種原因導致用戶無法更新,您只需要第一個? – david
@david - 我只需要第一個。 – aprajitha