私はSpringMVC3アプリケーションに取り組んでおり、リンクが無効になっている場合は、ページ内のリンクを有効/無効にし、リンクに関するツールチップ(ある種のヘルプ)を提供する必要があります。リンクは多くのシナリオで無効にすることができます。影響を受ける必要があるさまざまなレイヤーについて知りたいです。
たとえば、管理者ユーザーがサブスクリプションを更新しようとしているテストケースについて考えてみます。更新できるはずです
- 私は管理者ユーザーです
- サブスクリプションは30日以内に終了します
- 自分のサブスクリプションを更新していません。
私の場合、私はコントローラーを持っており、ユーザーが更新の資格があるかどうかを判断するサービスを呼び出します。更新の資格がない場合は、ヘルプテキストを提供する別のサービスに連絡してください。次に、ビュー(JSP)はリンクを有効/無効にし、modelAttributeに基づいてヘルプテキストも表示します。
私の質問は..
サービスへの2回の呼び出しを回避するにはどうすればよいですか(同じメソッドを再度呼び出すようです)。ヘルプテキストを保持するためにユーザーモデルに属性を追加できますが、ヘルプテキストをモデルに含める必要があるかどうかわかりません
サービスでハードコーディングする代わりに、プロパティファイルから更新ヘルプテキストを取得する方法。バリデーターで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";
}
}
}