タイプレベルのワイルドカードリクエストマッピングと、voidおよびドメインオブジェクトから派生したSprings論理ビュー名に関する質問が返されます。私は次のように言ってください
@Controller
class HomeController
{
@RequestMapping(value="/")
public void index () {}
}
Springsの論理ビュー名の生成方法についての私の理解は、上記のコントローラーが「/」を論理ビュー名「index」にマップし、たとえば、ApacheTilesを使用して適切なjspビューと照合できることです。
同様に、これはSpringsの論理ビュー名の作成についての私の理解を示しています(しかし、私は何かが欠けていると思います...)
@Controller
@RequestMapping("/collection/*")
class CollectionController
{
@Autowired
private SomeService someService;
@RequestMapping(method=RequestMethod.GET)
public List<Item> list ()
{
// in my understanding
// itemList should be available in the model (via generated name),
// that the logical view name generated should be
// collection/list and that this method
// would intercept the url "/collection/" or "/collection"
return someService.getItems();
}
@RequestMapping("/{itemId}")
public Item item (@PathVariable final String itemId)
{
// similiarly, item should be available in the
// model and the logical view name should be
// collection/item
return someService.getItem(itemId);
}
}
つまり、listメソッドはコレクションの「インデックス」ページとして解決されることはありません-代わりに、論理ビュー名は「コレクション」(私は定義していません-論理ビュー名を「コレクション/」にしたい)のように見えますリスト」。「item」メソッドは機能します-インデックスページが機能しないというだけです-漠然とした質問をお詫びします-他にどのように配置すればよいかわかりません-
論理ビュー名を定義するための文字列を返さずに、タイプレベルでワイルドカードURLに基づくメソッド名からSprings論理ビュー名を生成するにはどうすればよいですか?上記は私が期待したようには機能しません。私は何が欠けていますか?
アップデート:
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter
{
static private String [] TILES_DEFINITIONS= new String [] { "/WEB-INF/layouts/tiles.xml", "/WEB-INF/views/**/tiles.xml"};
/* static resource resolution */
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry)
{
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
/**
* ViewResolver configuration required to work with Tiles2-based views.
*/
@Bean
public ViewResolver viewResolver ()
{
UrlBasedViewResolver viewResolver= new UrlBasedViewResolver();
viewResolver.setViewClass(TilesView.class);
return viewResolver;
}
/**
* Configures Tiles at application startup.
*/
@Bean
public TilesConfigurer tilesConfigurer ()
{
final TilesConfigurer configurer= new TilesConfigurer();
configurer.setDefinitions(TILES_DEFINITIONS);
configurer.setCheckRefresh(true);
return configurer;
}
}
そして私のタイルフォルダ構造は
src/main/webapp/layouts (contains base page.jsp)
と
src/main/webapp/views/[VIEWNAME]/tiles.xml
ここで、VIEWNAMEはビュー名(申し訳ありません!)であり、そのビュー名のビューパスはそのフォルダーtiles.xmlで定義されています。それが物事をより明確にすることを願っています...