お世話になります。
パスは違うがファイル名が同じ場合のVIEWクラスの定義方法を教えてください。
例えば/index.html と /members/index.htmlのようなケースです。
どうしてもやり方が分からなかったので下記のケース4のように対応していますが、ファイル名が冗長になってしまうので/members/index.htmlにしたいです。
よろしくお願いします。
【RootController.java】/index.html用
@Controller
public class MembersController{
@RequestMapping(value = "/index")
public String index(Locale locale, Model model, Principal principal) {
String view = "index";
return view;
}
}
【MembersController.java】/members/index.html用
@Controller
@RequestMapping(value = "/members")
public class MembersController {
@RequestMapping(value = "/index")
public String index(Locale locale, Model model, Principal principal) {
String view = "members/index";
return view;
}
}
ケース1:packageを変える→ConflictingBeanDefinitionException
【IndexView.java】/index.html用
package web.view
@Component
@Scope("prototype")
public abstract class IndexView extends AbstractMixer2XhtmlView {
:
}
【MembersIndexView.java】/members/index.html用
package web.view.members
@Component
@Scope("prototype")
public abstract class IndexView extends AbstractMixer2XhtmlView {
:
}
この場合は
「Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'indexView' for bean class [web.view.members.IndexView] conflicts with existing, non-compatible bean definition of same name and class [web.view.IndexView]」となります。
ケース2:クラス名を変える→ClassNotFoundException
【MembersIndexView.java】/members/index.html用
package web.view
@Component
@Scope("prototype")
public abstract class MembersIndexView extends AbstractMixer2XhtmlView {
:
}
この場合は
「java.lang.ClassNotFoundException: web.view.members.IndexView]」となります。
ケース3:クラス名とpackageを変える→ClassNotFoundException
【MembersIndexView.java】/members/index.html用
package web.view.members
@Component
@Scope("prototype")
public abstract class MembersIndexView extends AbstractMixer2XhtmlView {
:
}
この場合も「java.lang.ClassNotFoundException: web.view.members.IndexView]」となります。
ケース4:/members/index.htmlのファイル名を変える(/members/membersIndex.html)→成功
【MembersController.java】/members/index.html用
@Controller
@RequestMapping(value = "/members")
public class MembersController {
@RequestMapping(value = "/index")
public String index(Locale locale, Model model, Principal principal) {
String view = "members/membersIndex";
return view;
}
}
【MembersIndexView.java】/members/membersIndex.html用
package web.view.members
@Component
@Scope("prototype")
public abstract class MembersIndexView extends AbstractMixer2XhtmlView {
:
}