After reading the comment:
I need separate viewModel class for C1 and C2. because C1 and C2 has different set of content(based on same schema) and C1 and C2 has separate component JSP or component view.
I think I know what you mean. While having the different models under the same view model name or schema is a future improvement, in the mean time the dd4t-databind framework is flexible enough to have two different model classes for Component Presentations, with the same combination of Schema and Component Template. It's a bit hacky, but this is possible:
ViewModel A:
@ViewModel(
viewModelNames = { "header_ct", "footer_ct"},
)
public class HeaderAndFooter extends TridionViewModelBase { }
ViewModel B:
@ViewModel(
rootElementNames = { "content" },
)
public class Content extends TridionViewModelBase { }
This way, in your JSPs you can do:
View A:
<jsp:useBean id="header_ct" type="com.foo.HeaderAndFooter" scope="request"/>
View B:
<jsp:useBean id="content" type="com.foo.Content" scope="request"/>