我正在开发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